通过前面几个小结内容,我们了解了多线程与多进程的执行效率的巨大提升,前面的例子我们都是手动实例化几个线程对象t=Thread(),假设我们要创建100多个线程,总不能用t0=Thread一直到t99=Thread吧,此时我们需要借助线程池或进程池。
线程池:即系统一次性开辟一些线程,用户直接给线程池提交任务,线程任务的调度交给线程池来完成。进程池与之类似。
线程池的示例
代码语言:Python复制from concurrent.futures import ThreadPoolExecutor
def function(name):
for i in range(10):
print(name, i)
if __name__ == '__main__':
# 创建线程池
with ThreadPoolExecutor(50) as t:
for i in range(100):
t.submit(function, name=f"主线程{i}")
# 等待线程池中的任务全部执行完毕. 才继续执行
print("完毕")
我们通过submit提交线程,提交到有50个线程容量的线程池,每次循环提交一个输出100个数字的线程。等待线程池所有任务结束后再打印主函数后面的“完毕”。进程池的创建和线程池一样,只不过把程序中多线程类库ThreadPoolExecutor改成多进程类库ProcessPoolExecutor即可。