码迷,mamicode.com
首页 > 系统相关 > 详细

进程池Pool

时间:2019-01-29 15:00:00      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:close   工作量   动态   创建   fun   worker   print   bsp   work   

当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程, 但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。

 1 from multiprocessing import Pool
 2 import os
 3 import random
 4 import time
 5 
 6 def worker(num):
 7     print("=====pid = %d===这是第 %d 个任务===="%(os.getpid(),num))
 8     time.sleep(2)
 9 
10 # 进程池的中最多有3个进程一起执行
11 pool = Pool(3)
12 
13 for i in range(10):
14     print("----%d----"%i)
15     # apply_async()向进程池中添加任务,并传递一个参数 
16     pool.apply_async(worker,(i,))
17 
18 pool.close() # 关闭进程池,不能再添加任务了
19 
20 pool.join()    # 主进程默认不等待子进程执行,所以要join
  • apply_async(func[, args[, kwds]]) :使用非阻塞方式调用func(并行执行,堵塞方式必须等待上一个进程退出才能执行下一个进程),args为传递给func的参数列表,kwds为传递给func的关键字参数列表;

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

 

进程池Pool

标签:close   工作量   动态   创建   fun   worker   print   bsp   work   

原文地址:https://www.cnblogs.com/qiushanjian/p/10333754.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!