进程池

======================================

多进程

优点:并行多个任务,提高运行效率

           空间独立,数据安全,创建方便

缺点:进程创建销毁的过程中销毁较多的计算机资源

=============================================

在需要频繁的创建和删除较多进程的情况下,导致计算机资源消耗过多,由此引发出进程池技术

进程池如何处理;

1、创建进程池,在池内放入适量的进程(一般看cup内核数量)

2、将事件加入进程池等待队列

3、使用进程池中的进程不断处理事件

4、所有事件处理后,回收关闭进程池

from multiprocessing import Pool

Pool()

功能:创建进程池

参数:processes  指定进程池中的进程数量

返回:得到进程池对象

pool.apply_async()         pool这里指的是进程池对象

功能:异步方式将事件放入进程池执行

参数: func:要执行的事件函数

    args:同Process中args 给函数传参

    kwds:同process中Kwargs给函数传参

返回值:返回一个对象,该对象可以通过get()方法得到func函数的返回值

pool.close()

功能:关闭进程池,使其无法加入新的事件

pool.join()

功能:阻塞等待进程池退出(当所有事件处理完毕)

pool.apply()

用法和apply_async一样,只不过是事件是一件一件按顺序完成。(一般不使用)

===========================

pool.map(func,iter)

===========================

from multiprocessing import Pool
from time import sleep
import os

def worker(msg):
    sleep(2)
    print(msg)

#创建进程池,启动4个进程
pool=Pool(processes=4)    

#放入事件
for i in range(10):
    msg="Hello %d"%i
    pool.apply_async(worker,(msg,))
sleep(3)
print('='*10)
#关闭进程池,不能加入事件
pool.close()    

#阻塞等待回收
pool.join()
yangrui@ubuntu:~/num6$ python3 pool.py 
Hello 0
Hello 3
Hello 1
Hello 2
==========
Hello 4
Hello 6
Hello 7
Hello 5
Hello 9
Hello 8
yangrui@ubuntu:~/num6$ python3 pool.py 
Hello 0
Hello 1
Hello 2
Hello 3
==========
Hello 5
Hello 4
Hello 6
Hello 7
Hello 8
Hello 9
执行结果
原文地址:https://www.cnblogs.com/sike8/p/11131021.html