4.线程池与进程池

2024-07-06 17:25:08 浏览数 (1)

通过前面几个小结内容,我们了解了多线程与多进程的执行效率的巨大提升,前面的例子我们都是手动实例化几个线程对象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即可。

0 人点赞