Python多进程编程
为了加快速度,当然必须要多进程啦,Python可没有MATLAB里面的parfor
源代码
import multiprocessing
pool = multiprocessing.Pool() #默认能调用几个进程就用几个进程,也可以传入一个参数指定数目
result = {} #储存函数的返回值的
def time_consuming(dim,method):
print(multiprocessing.current_process().name+' has start')
pass
for method in methods:
for dim in dims: #遍历所有的参数,按照自己的需求写即可,我是需要跑所有不同维度,不同方法下的时间损耗。
result[(method,dim)]=pool.apply_async(time_consuming, (dim,method, ))
#time_consuming是函数名
#(dim,method, ) 是传入的参数
#result 保存了这些进程地址,便于之后获取函数返回值
pool.close()# 关闭进程池,不再接收新的任务
pool.join()#等待所有进程运行完毕
for method in methods:
for dim in dims:
time_cost_result=result[(method,dim)].get() #这就可以再一个一个的获取结果了
主要是怎么把自己的代码封装到一个函数里,因为多进程只能一个函数一个函数的调用。
对本文有任何问题,请在下面评论: