python多处理中使用信号终止子进程

2024-04-24 23:32:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码运行两个工作进程,类似于以下内容:

for queue in queues:
   process = multiprocessing.Process(name=queue.name, target=worker, args=(args,))

我将这个特定的程序变成一个守护进程,所以我还注册了一些信号处理程序来捕获SIGTERM,这样父进程就可以确保子进程终止。像这样:

^{pr2}$

当我这样做的时候,我会遇到一些奇怪的错误,包括“只能测试子进程”和“模块‘线程化’中的KeyError”。在

如果没有发布完整的堆栈strace(它很长),我处理这个问题的方式有什么根本性的错误吗?IE:我不应该以这种方式在信号处理程序中终止进程吗?在


Tags: namein程序forqueue进程错误方式