用来控制线程的执行,由一些线程去控制另一些线程
什么是进程池与线程池
进程池与线程池是用来控制当前程序允许创建(进程/线程)的数量
进程池与线程池的作用
保证在硬件允许的范围内创建(进程/线程)的数量
如何使用
from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor
import time
# ProcessPoolExecutor(5) # 5代表只能开启5个进程
# ProcessPoolExecutor() # 默认以CPU的个数限制进程数
pool = ThreadPoolExecutor(5) # 5代表只能开启5个线程 -5 +1 -1 +1 -1
# ThreadPoolExecutor() # 默认以CPU个数 * 5 限制线程数
# t = Tread() # 异步提交
# t.start(0)
# pool.submit('传函数地址') # 异步提交任务
# def task():
# print('线程任务开始了...')
# time.sleep(1)
# print('线程任务结束了...')
#
#
# for line in range(5):
# pool.submit(task)
# 异步提交任务
# pool.submit('传函数地址').add_done_callback('回调函数地址')
def task(res):
# res == 1
print('线程任务开始了...')
time.sleep(1)
print('线程任务结束了...')
return 123
# 回调函数
def call_back(res):
print(type(res))
# 注意: 赋值操作不要与接收的res同名
res2 = res.result()
print(res2)
for line in range(5):
pool.submit(task, 1).add_done_callback(call_back)
# 会让所有线程池的任务结束后,才往下执行代码
# pool.shutdown()
print('hello')
注意:协程不是操作系统资源,他是程序起的名字,为了让单线程能实现并发
操作系统:
多道技术,切换+保存状态
协程
通过手动模拟操作系统“多道技术”,实现 切换+保存状态
优点:
在IO密集型的情况下,会提高效率
缺点:
若在计算密集型的情况下,来回切换,反而效率更低
如何实现协程:切换+保存状态
原文:https://www.cnblogs.com/1012zlb/p/11773288.html