进程池Pool

Posted qiushanjian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程池Pool相关的知识,希望对你有一定的参考价值。

当需要创建的子进程数量不多时,可以直接利用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的主要内容,如果未能解决你的问题,请参考以下文章

进程池Pool

进程池Pool的imap方法解析

进程-进程池Pool

进程-进程池Pool

进程池Pool

python 进程池pool