欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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()#等待回收进程池
相关标签: 多进程