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。请告诉我一种方法,我可以通过递归方式杀死由它产生的小果实,以便所有4只被杀死。
答案 0 :(得分:0)
gevent维护和事件队列,一旦调用join()就开始运行。没有存储的树结构,至少不是我所知道的。如果你想要杀死所有衍生的孩子,你自己维护一个产卵列表,并通过它们进行迭代杀死。