10.24 Event事件,进程池与线程池,协程

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:保存状态

原文地址:https://www.cnblogs.com/793564949liu/p/11733953.html