python多进程与进程池
程序员文章站
2022-05-02 12:53:50
...
python中多进程和多线程使用multiprocessing模块实现多进程和进程池
多进程
multiprocessing.Process()
参数:
target 指定要绑定的函数
name 给创建的进程起一个名字
args 需要一个元组,给target指定的函数按位置传参
kwargs 需要给一个字典,给target指定的函数按键值
from multiprocessing import Process
def fun(x,y):
return x+y
p1=Process(target=fun,args=(1,2))
p1.start()
print("进程名称:",p.name)
print("进程PID:",p.pid)
print('进程状态:',p.is_alive())
p.join([timeout])#父进程可设置超时回收时间,不设置则父进程一直等待
进程池
Pool
功能:创建进程池
参数: processes :进程池中进程的数量,如果不给,默认为cup核心数
apply_async() : 以异步的方式将要执行的事件放入进程池
参数
func : 要执行的函数
args : 给函数按位置传参
kwds : 给函数按照键值传参
返回值 : 返回事件执行后的返回值对象,可以通过调用get() 函数获取事件函数return的内容
apply() : 按照顺序添加要执行的时间,执行一个再添加一个
close(): 关闭进程池,使其不能再加入新的事件
join():阻塞等待进程池将时间都执行结束后回收进程池
from multiprocess import Pool
def fun(x):
return x**2
result=[ ]
pool = Pool(processes = 4)
for i in range(10):
r=pool.apply_async(fun,(i,))#异步的方式将函数放入进程池,参数以元组形式传入
result.append(r)
for res in result:
print(res.get())#用get方法获取函数返回值
pool.close()#关闭进程池,进出不能再放入
pool.join()#等待回收进程池
下一篇: 多进程