如何并行化在Python中返回值的函数?
问题描述:
我有两个函数,core_ensembling和sampling.core集合返回值。我需要并行化采样函数内的core_ensebling函数,即我需要并行计算set1,set2,set3 ... set6。所有这些计算都是独立的。那么,是否可以并行这个节目呢?我。怎么可以这样做?我使用Windows 10,其中有2个核心和Python的英特尔i3处理器的2.7如何并行化在Python中返回值的函数?
def core_ensembling(args):
#some code#
return ensemble_set
def sampling(p,q):
total_frames=q
ensemble_row=6
ensemble_col=8
frame_ensemble=[]
ensemble_set=[]
args1=[8,0,80,total_frames,p]
args2=[16,80,160,total_frames,p]
args3=[24,160,240,total_frames,p]
args4=[32,240,320,total_frames,p]
args5=[40,320,400,total_frames,p]
args6=[48,400,480,total_frames,p]
# parallising part
set1=core_ensembling(args1)
set2=core_ensembling(args2)
set3=core_ensembling(args3)
set4=core_ensembling(args4)
set5=core_ensembling(args5)
set6=core_ensembling(args6)
ensemble = list(itertools.chain(set1,set2,set3,set4,set5,set6))
return ensemble
答
import multiprocessing
pool = multiprocessing.Pool()
set1 = pool.apply_async(core_ensembling, args1)
# ...
set6 = pool.apply_async(core_ensembling, args6)
ensemble = list(itertools.chain(set1.get(),set2.get(),set3.get(),set4.get(),set5.get(),set6.get()))
谢谢你,但有误差** RuntimeError : 尝试在当前进程 完成其引导阶段之前尝试启动新进程。** – user6745741
@ user6745741:请参阅http:// stackover flow.com/a/18205006/4323 –