您的位置:首页 > 其它

进程池pool

2020-02-03 04:59 323 查看

使用情况

当需要的进程不多时,可以使用multiprocessing 中的process动态生成多个进程,
如果需要的进程数量过于庞大,则使用 multiprocessing 中提供的 pool 方法。

初始化进程池时。可以指定一个最大进程值,当有新的进程请求被提交时,如果进程池还没有满,则会创建一个新的进程池执行该请求,但如果进程池中的进程已达到最大值,则该请求加入等待队列,当有进程被执行结束时,从等待队列被分配。

代码实现

  • windows 和 Linux 平台代码略有不同

windows

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from multiprocessing import Pool
import os
import time
import random

def worker(msg):
t_start = time.time()
print("%s 开始执行,进程号为 %d" % (msg,os.getpid()))
# 随机生成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)
for i in range(0,10):
po.apply_async(worker,(i,))

print("----start----")
po.close()
po.join()
print("----end----")

Linux

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from multiprocessing import Pool
import os
import time
import random

def worker(msg):
t_start = time.time()
print("%s 开始执行,进程号为 %d" % (msg,os.getpid()))
# 随机生成0--1之间的浮点数
time.sleep(random.random()*2)
t_stop = time.time()
print(msg,"执行完毕,耗时%0.2f" % (t_stop-t_start))

po = Pool(3)
for i in range(0,10):
po.apply_async(worker,(i,))

print("----start----")
po.close()
po.join()
print("----end----")

运行截图

未完待续。。。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
生于尘埃 发布了17 篇原创文章 · 获赞 8 · 访问量 1545 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: