Event事件
作用
由一些线程控制另一些线程的执行
from thearding import Event
e = Event()
e.wait() #标记为False
e.set() #标记为True
进程池与线程池
什么是进程池与线程池
进程池与线程池是用来控制当前程序允许创建(进程/线程)的数量
进程池与线程池的作用
保证在硬件允许的范围内创建(进程/线程)的数量
如何使用
from concurrent.futures import ProcessPollExecutor
ProcessPollExecutor(5) #代表只能开启5个进程
ProcessPollExecutor() #默认CPU个数限制进程数
ThreadPollExecutor(5) #5代表只能开启5个线程
ThreadPollExecutor() #默认CPU个数*5限制线程数
回调函数
def call_back(res):
print(type(res))
#注意:赋值操作不要与接收值同名
res2 = res.result()
print(res2)
会让所有线程池的任务结束后才能继续执行下面的代码
协程
在单线程下实现并发
注意:协程不是操作系统资源,是程序员起的名字,让单线程能实现并发
目的
操作系统
多道技术,切换+保存状态
遇到IO
CPU执行时间过长
协程
通过手动模拟操作系统"多道技术",实现切换+保存状态
手动实现遇到IO,欺骗操作系统误以为没有IO操作
单线程 遇到IO 切换+保存状态
单线程 计算密集型,来回切换+保存状态,反而效率降低
优点:
在IO密集型情况下,会提高效率
缺点:
若在计算密集型情况下,会降低效率
如何实现协程
切换+保存状态
并发:切换
yield:保存状态