Gevent Pool apply_async

时间:2016-05-27 02:56:43

标签: python python-3.x gevent

如何阻止您的程序在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

1 个答案:

答案 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.