信号处理程序每​​个进程被调用一次

时间:2019-04-01 16:05:26

标签: python multiprocessing signals

我有一个产生多个进程的程序,然后用Ctrl + C将其杀死。

在程序开始时,我捕获了信号以便执行一些清理操作。

def cleanup(*_):
    # do cleanup operations here
    # ...
    exit(1)

# trap ctrl+c and hide the traceback message
signal(SIGINT, cleanup)

# spawn processes (pool of workers) and do work here
# ...

问题是cleanup被多次调用(每个运行的进程一次)。

如何做到cleanup仅被调用一次?

1 个答案:

答案 0 :(得分:1)

您的子进程正在从其父进程继承信号处理程序。如果您希望处理程序仅在一个进程中执行,则可能要在子进程中注销该处理程序。