当前位置: 首页 > 图灵资讯 > 行业资讯> Python中的进程池是什么

Python中的进程池是什么

发布时间:2025-11-03 16:23:06

Pool进程池

当需要创建的子过程数量较少时,可以直接利用multiprocesing中的process动态成生多个过程。但是,如果是数百甚至数千个目标,手动创建过程的工作量是巨大的。此时,可以使用multiprocesing模块提供的pool方法。

当Pool初始化时,可以指定一个过程数。当新请求提交到Pool时,如果池未满,则创建新过程执行请求;但是,如果池中的过程数达到指定值,请求将等待,直到池中的过程结束。

frommultiprocessingimportPool
importos
importtime
importrandom
defworker(msg):
t_start=time.time()
print("%dd过程开始执行%d"%(os.getpid(),msg))
#random.random()在0~1之间随机生成浮点数
time.sleep(random.random()*2)
t_stop=time.time()
print(msg,"执行完毕,耗时%0.2f"%(t_stop-t_start))
if__name__='__main__':
po=Pool(3)#定义一个进程池,进程数为3
foriinrange(0,10):
#Pool.apply_async(要调用的目标,(传递给目标的参数元祖,)
#每一个循环都会使用空闲的子进程来调用目标
po.apply_async(worker,(i,))
print("----start----")
po.close()#关闭进程池,关闭后,po将不再接受新的请求
po.join()#等待po中所有子过程的完成,必须放在close语句后面
print("-----end-----")

运行结果如下:

----start----
4353进程开始执行0
14354进程开始执行
开始执行4355进程2
2.完成执行需要0.20的时间
34355进程开始执行3355
1.完成执行需要1.19的时间
4354进程开始执行4354进程
4.完成执行需要0.37
54354进程开始执行
0.完成执行需要1.57
6353进程开始执行
5.完成执行需要0.19
74354进程开始执行
3.完成执行需要1.63
8355进程开始执行
6.完成执行需要0.49
9353进程开始执行
8.完成执行需要0.75
7.完成执行需要0.90的时间
9.执行完成需要0.63
-----end-----

相关推荐:Python视频教程

multiprocessing.Pool常用函数分析:

apply_async(func[, args[, kwds]]) :使用非阻塞调用func(并行执行,必须等待上一个过程退出才能执行下一个过程),args是传输给func的参数列表,kwds是传输给func的关键字参数列表;

apply(func[, args[, kwds]]):使用阻塞方法调用func

close():关闭Pool,使其不再接受新任务;

terminate():无论任务是否完成,立即终止;

join():主过程堵塞,等待子过程退出, 必须在close或terminate之后使用;

apply堵塞式

frommultiprocessingimportPool
importos
importtime
importrandom
defworker(msg):
t_start=time.time()
print("%dd过程开始执行%d"%(os.getpid(),msg))
#random.random()随机生成0~1之间的浮点数
time.sleep(random.random()*2)
t_stop=time.time()
print(msg,"执行完毕,耗时%0.2f"%(t_stop-t_start))
if__name__='__main__':
po=Pool(3)#定义一个进程池,进程3
foriinrange(0,10):
#Pool.apply_async(要调用的目标(传递给目标参数元祖)
#每个循环都将使用空闲的子过程来调用目标
po.apply(worker,(i,))
print("----start----")
po.close()#关闭进程池,关闭后,po将不再接受新的请求
po.join()#等待po中所有子过程的完成,必须放在close语句后面
print("-----end-----")

运行结果如下:

4400进程开始执行00
0.执行完成需要1.89
开始执行4401进程1
1、执行完成,耗时1.91
24402进程开始执行
2.完成执行需要1.64
34400进程开始执行
3.完成执行需要1.16
4401进程开始执行
4.完成执行需要1.85
54402进程开始执行
5.完成执行需要0.29
64400进程开始执行
6.完成执行需要0.19
74401进程开始执行
7.完成执行需要1.19时间
84402进程开始执行
8.完成执行需要0.61
94400进程开始执行
9.完成执行需要1.08
----start----
-----end-----

说明:从操作结果可以看出,在主要过程的start和end打印之前,阻塞式会等过程池中的过程已经完成。

相关推荐:

Python的过程是什么?

相关文章

Python中的进程池是什么

Python中的进程池是什么

2025-11-03
Python如何进行进程间的通信

Python如何进行进程间的通信

2025-11-03
Python中的子进程是什么

Python中的子进程是什么

2025-11-03
Python list列表添加元素的3种方法

Python list列表添加元素的3种方法

2025-11-03
Python list列表删除元素的3种方法

Python list列表删除元素的3种方法

2025-11-03
Python中的线程和多线程是什么

Python中的线程和多线程是什么

2025-11-03