此代码不打印任何内容:
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
但是这段代码会打印数字:
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
唯一的区别是pool.waitall()
。在我看来,waitall()
这意味着等到池中的所有绿色线程都完成工作,但是无限循环等待每个绿色线程,所以pool.waitall()
没有必要。
那么为什么会这样呢?
参考:http ://eventlet.net/doc/modules/greenpool.html#eventlet.greenpool.GreenPool.waitall