随笔 - 18  文章 - 43  评论 - 2  阅读 - 13064 

进程池ProcessPoolExecutor基本用法

当我们需要执行的任务较多时,想要创建多个线程或者进程来提高效率,而一个一个创建线或进程比较麻烦,这时我们就可以使用线程池/进程池。

线程池的作用就是开辟一些线程,我们直接给线程池提交任务,线程任务的调度交给线程池来完成。

concurrent.futures 模块提供了 ThreadPoolExecutorProcessPoolExecutor 两个类,其中 ThreadPoolExecutor 用于创建线程池,而 ProcessPoolExecutor 用于创建进程池。 

基本用法如下示例:

复制代码
import time
from concurrent.futures import ProcessPoolExecutor
import multiprocessing

class TestA(object):
    def func1(self, name, num):
        proc = multiprocessing.current_process()
        while True:
            print(f"{name}--{num}--{proc.name}")
            time.sleep(2)

if __name__ == '__main__':
    ta = TestA()
    with ProcessPoolExecutor(5) as ppool: # 创建一个5个进程的进程池
        for i in range(1, 4):
            ppool.submit(ta.func1, '张三', i) # 将任务函数交给线程池,由线程池去调度

# 运行结果如下:
# 张三--1--SpawnProcess-1
# 张三--2--SpawnProcess-2
# 张三--3--SpawnProcess-3
# 张三--1--SpawnProcess-1
# 张三--2--SpawnProcess-2
# 张三--3--SpawnProcess-3
# ...
复制代码

with ProcessPoolExecutor(5) as ppool 表示创建进程池,进程池大小为5,即最多有5个进程;

submit(func, *args) 表示将任务函数 func 交给进程池,*args 为任务函数的参数。

ThreadPoolExecutor用法相同。

 

posted on   木去  阅读(2033)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示

目录导航