此代碼打印什麼:爲什麼沒有eventlet GreenPool在spawn_n之後調用func除非waitall()?
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