2014-02-04 2 views
0

У меня есть два набора параллельных операций один следовать другому, что-то вроде этого:Как использовать Пул для нескольких наборов процессов?

for i in range(A): 
    pool.apply_async(func_a, (params_for_a)) 


for i in range(B): 
    pool.apply_async(func_b, (params_for_b)) 

я должен ждать все процессы func_a законченные перед началом процессов func_b. Чтобы использовать join(), я слишком близко() пул, а затем создаю еще один пул для func_b. Создает ли для этого два пула?

В чем разница между пулом и процессом? В чем разница между apply_async и map?

Спасибо.

ответ

1

Вам необходимо что-то сделать с объектом AsyncResult, который дает вам apply_async. Как правило, добавьте их все в list, затем сделайте что-нибудь с ними.

results = [] 

for i in range(A): 
    results.append(pool.apply_async(func_a, (params_for_a))) 

for res in results: 
    # block main thread until all results are in 
    res.wait() #or do something with res.get() 

#all results in, proceed with pool B 
Смежные вопросы