Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.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 如何杀死子进程&;由主管控制的子流程_Python_Process_Supervisord_Gipc - Fatal编程技术网

Python 如何杀死子进程&;由主管控制的子流程

Python 如何杀死子进程&;由主管控制的子流程,python,process,supervisord,gipc,Python,Process,Supervisord,Gipc,在由主管控制的流程中,我创建子流程 xrange中i的(管理器\u进程\u数量): p=gipc.start_进程(target=daemon_进程,args=()) 记录。追加(p) 对于记录中的r: r、 加入 然后在每个子进程中,我创建孙子进程: w=gipc.start\u进程(target=self.\u pool\u worker,daemon=True) 如何在运行时杀死所有子进程和孙进程 “supervisorctl stop xxx”停止我的主进程?您有几个选项: 修改Py

在由主管控制的流程中,我创建子流程

xrange中i的
(管理器\u进程\u数量):
p=gipc.start_进程(target=daemon_进程,args=())
记录。追加(p)
对于记录中的r:
r、 加入
然后在每个子进程中,我创建孙子进程:

w=gipc.start\u进程(target=self.\u pool\u worker,daemon=True)
如何在运行时杀死所有子进程和孙进程
“supervisorctl stop xxx”停止我的主进程?

您有几个选项:

  • 修改Python程序,以便当它们接收到像
    SIGTERM
    这样的信号时,它们会显式地将它们传播给子级

  • 启用
    supervisord
    选项
    stopasgroup
    killasgroup
    。这些选项被视为向整个进程组发送信号,而不是仅向一个进程发送信号


  • 您有两个选择:

  • 修改Python程序,以便当它们接收到像
    SIGTERM
    这样的信号时,它们会显式地将它们传播给子级

  • 启用
    supervisord
    选项
    stopasgroup
    killasgroup
    。这些选项被视为向整个进程组发送信号,而不是仅向一个进程发送信号


  • 我已经设置了配置选项:
    stopasgroup=true,killasgroup=true
    。但它似乎不起作用。您可以检查(使用
    ps-f
    左右)每个进程的父PID是什么,以及每个进程的进程组ID(PGID)是什么吗?了解全部细节在这里真的很有帮助。另外,您是否可以尝试在每个Python程序中设置一个信号处理程序,以便在
    SIGTERM
    上打印一些内容,并使用
    stopasgroup
    进行测试?好的,我会尝试,非常感谢。我已经设置了配置选项:
    stopasgroup=true,killasgroup=true
    。但是它似乎不起作用。您可以检查(使用
    ps-f
    或其他方法)吗每个进程的父PID是什么,每个进程的进程组ID(PGID)是什么?了解全部细节在这里真的很有帮助。另外,您是否可以尝试在每个Python程序中设置一个信号处理程序,以便在
    SIGTERM
    上打印一些内容,并使用
    stopasgroup
    进行测试?好的,我会尝试,非常感谢。