小编jbg*_*jbg的帖子

除非waitall(),否则为什么eventlet GreenPool在spawn_n之后不调用func?

此代码不打印任何内容:

def foo(i):
    print i

def main():
    pool = eventlet.GreenPool(size=100)
    for i in xrange(100):
        pool.spawn_n(foo, i)
    while True:
        pass
Run Code Online (Sandbox Code Playgroud)

但是此代码显示数字:

def foo(i):
    print i

def main():
    pool = eventlet.GreenPool(size=100)
    for i in xrange(100):
        pool.spawn_n(foo, i)
    pool.waitall()
    while True:
        pass
Run Code Online (Sandbox Code Playgroud)

唯一的区别是pool.waitall()。在我看来,waitall()意味着要等到池中的所有绿色线程都完成工作后才开始,但是无限循环会等待每个绿色线程,因此pool.waitall()没有必要。

那么为什么会这样呢?

参考:http : //eventlet.net/doc/modules/greenpool.html#eventlet.greenpool.GreenPool.waitall

python green-threads eventlet

3
推荐指数
1
解决办法
869
查看次数

标签 统计

eventlet ×1

green-threads ×1

python ×1