【问题标题】:Gevent Pool apply_asyncGevent 池 apply_async
【发布时间】:2016-09-25 05:46:29
【问题描述】:

如何防止程序在 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 in gevent

【问题讨论】:

    标签: python python-3.x 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 永远不会被调度。当调用连接时,greenlets 不会作为单独的线程运行。 Concurrency versus parallelism.

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 1970-01-01
      • 2021-07-06
      • 2020-04-29
      • 2023-02-02
      • 2020-10-30
      • 2021-09-08
      • 1970-01-01
      • 2021-05-03
      相关资源
      最近更新 更多