Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 递归终止生成的greenlet_Python_Kill_Gevent_Spawn - Fatal编程技术网

Python 递归终止生成的greenlet

Python 递归终止生成的greenlet,python,kill,gevent,spawn,Python,Kill,Gevent,Spawn,在第十次迭代之后,调用kill,它将杀死运行f2的greenlet。请告诉我一种方法,我可以杀死由它递归产生的greenlet,这样所有4个都会被杀死。gevent维护并在调用join()后开始运行的事件队列。没有存储的树结构,至少我不知道。如果你想杀死所有繁殖的孩子,请自己维护一个繁殖列表,并迭代它们以杀死。停止暴力。永远不要考虑杀害儿童。对任何通过谷歌发现这个问题的人:请自首 import gevent def f1(): gevent.spawn(f3) while Tr

在第十次迭代之后,调用
kill
,它将杀死运行
f2
的greenlet。请告诉我一种方法,我可以杀死由它递归产生的greenlet,这样所有4个都会被杀死。

gevent维护并在调用join()后开始运行的事件队列。没有存储的树结构,至少我不知道。如果你想杀死所有繁殖的孩子,请自己维护一个繁殖列表,并迭代它们以杀死。

停止暴力。永远不要考虑杀害儿童。对任何通过谷歌发现这个问题的人:请自首
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)