进程池Pool


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

初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求,但如果进程池中已经达到指定的最大值,那么该请求就会等待,直到池中有进程结束,才会用之前的进程来执行新的任务

Pool常用方法

  apply.async(func, args=(, kwds)):使用非阻塞方式调用func(并行执行,阻塞方式必须等待上一个进程退出才能执行下一个进程),args为传递给func函数的参数列表,kwds为传递给func的关键字参数列表;

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

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

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

进程池中的进程通信: