2016-05-27 63 views
0

如何防止你的程序在GEVENT 與pool.apply_async停止我的意思是GEVENT池apply_async

import gevent 
from gevent.monkey import patch_all 
from gevent.pool import Pool 

pool = Pool(10) 

def print_num(num): 
    print(num) 


numbers = [1,2,3,4,5,6,7,8,9,10] 

for number in numbers: 
    self.pool.apply_async(print_num, args=(number,)) 

現在如果我們運行上面的代碼,因爲是程序將關閉,工人還沒有完成的一切

如果我們添加一個join該程序仍然存在。

我們如何等待所有的工人來完成他們需要

pool.apply_async做在gevent

回答

1

什麼這只是正常的我。

import gevent 
from gevent.monkey import patch_all 
from gevent.pool import Pool 

pool = Pool(10) 

def print_num(num): 
    print(num) 


numbers = [1,2,3,4,5,6,7,8,9,10] 

for number in numbers: 
    pool.apply_async(print_num, args=(number,)) 

pool.join() 

併發不是多線程

當不叫pool.join那麼greenlets從不調度。當連接被調用時,greenlet不會作爲單獨的線程運行。 Concurrency versus parallelism.