此代码不打印任何内容:
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