2016-11-19 3 views
0

У меня есть две функции: core_ensembling и sampling.core, которые объединяют возвращаемые значения. Мне нужно распараллелить функцию core_ensebling внутри функции выборки. Это нужно, чтобы вычислять set1, set2, set3 ... set6.Этот вычисления независимы. так можно ли распараллелить программу? .Как я могу это сделать? я использую Windows 10, процессор Intel i3, который имеет 2 ядра и питона 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 

ответ

0
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())) 
+0

Спасибо, но получил сообщение об ошибке, как ** RuntimeError : Попытка запуска нового процесса до текущего процесса завершила фазу начальной загрузки. ** – user6745741

+1

@ user6745741: см. Http: // stackover flow.com/a/18205006/4323 –

Смежные вопросы