【发布时间】:2014-06-04 13:34:11
【问题描述】:
import gevent
def f1():
gevent.spawn(f3)
while True:
print "f1"
gevent.sleep(1)
def f2():
gevent.spawn(f1)
while True:
print "f2"
gevent.sleep(1)
def f3():
gevent.spawn(f4)
while True:
print "f3"
gevent.sleep(1)
def f4():
while True:
print "f4"
gevent.sleep(1)
g2 = gevent.spawn(f2)
g2.join(timeout=1.0)
def kill(g):
##
## kill children here
##
g.kill()
for i in range(100):
print "--"*4, i
if i == 10:
kill(g2)
gevent.sleep(1)
在第十次迭代之后,kill 被调用,这会杀死正在运行 f2 的 greenlet。请告诉我一种方法,我可以递归地杀死由它产生的greenlets,以便将所有4个都杀死。
【问题讨论】:
-
停止暴力。永远不要考虑杀害儿童。
-
致通过谷歌发现此问题的任何人:请自首