如何阻止您的程序在gevent中使用pool.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
答案 0 :(得分: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,则永远不会安排greenlet。调用连接时,greenlet不会作为单独的线程运行。 Concurrency versus parallelism.