关于线程
Posted inti
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于线程相关的知识,希望对你有一定的参考价值。
协程:所与要的线程:单线程,方式:同步,实现:异步程序级别:函数,实现机制:事件循环+协程 应用场景:io密集任务
协程
那yield from通常用在什么地方呢?在协程中,只要是和IO任务类似的、耗费时间的任务都需要使用yield from来进行中断,达到异步功能!
@asyncio.coroutine装饰器是协程函数的标志,我们需要在每一个任务函数前加这个装饰器,并在函数中使用yield from yield from 类似for i in range()
Import asycio 中 yield from 替换为await
新语法把@asyncio.coroutine替换为async
Yield from
Import threading
#线程调用一定要start方法启动线程 结束
For i intherads:
- jion()等待线程完成
继承创建线程一定重写父类run方法
锁单线程一般不怎么用到 锁的好处确保了某段关键代码只能由一个线程重头到尾完整执行 保密性
锁的坏处:阻止了多线程并发运行,效率大大降低,由于可以纯在多个锁不同线程持有不同的锁并且试图获取对方的锁,可能会出现死锁
每个线程一定会有一个名字,无法控制线程的调度,通过其他方法影响线程调度,死锁 互斥 生产者和消费者
同步就是协同步调按照预定的先后顺序运行eg:你说完我在说
并发不是同步在程序中
线程的几种状态:新建 就绪 运行态 死亡
等待(阻塞)
线程池:
- 我们把任务放进队列中去,然后开N个线程,每个线程都去队列中取一个任务,执行完了之后告诉系统说我执行完了,然后接着去队列中取下一个任务,直至队列中所有任务取空,退出线程。
使用线程池:
- 由于线程预先被创建并放入线程池中,同时处理完当前任务之后并不销毁而是被安排处理下一个任务,因此能够避免多次创建线程,从而节省线程创建和销毁的开销,能带来更好的性能和系统稳定性。
以上是关于关于线程的主要内容,如果未能解决你的问题,请参考以下文章