一.进程池:
提前创建一定数量的进程 重复使用这些进程特点:
节约反复创建-销毁的系统开销
自动会进程池中的进程进行管理
提高对用户需求的响应效率
两种添加任务方式:
apply 添加任务并且阻塞等待任务执行完成
self.apply_async().get()
apply_async
只管添加任务 不等待执行完成而直接往下继续执行
二.生成器:
两种方式:
1.生成器表达式
[x for x in range(10000)] ----> (x for x in range(10000))
优点: 节约空间 在for循环遍历的时候动态生成所需的值
2.生成器函数
含有yield关键字的函数
yield关键字作用
1) 挂起当前执行的代码 把yield后面的值返回给调用生成器代码的地方
2) 恢复代码继续执行 从上次挂起的地方紧接着继续执行 并且还可以接收额外数据赋值给 yield等号左边的变量
唤醒生成器两种方式
yield返回的值 = next(生成器对象)
生成器对象.send(data=None) 参数是额外数据 是yield关键字接收
注意点:
第一次唤醒生成器对象的时候 必须使用next(生成器对象)