如何在 python 中终止进程之前执行代码?

How to execute code just before terminating the process in python?

此问题涉及 python 中的多处理。我想在终止进程时执行一些代码,更具体地说,就在它终止之前。我正在为 python 程序寻找一个作为 atexit.register 的解决方案。

我有一个看起来像的方法工作者:

定义工人(): 而真实的: 打印('work') time.sleep(2) return

我运行它是:

proc = multiprocessing.Process(target=worker, args=()) proc.start()

我的目标是在终止它之前执行一些额外的代码,我这样做是:

proc.terminate()

使用信号处理并拦截 SIGTERM:

import multiprocessing
import time
import sys
from signal import signal, SIGTERM

def before_exit(*args):
    print('Hello')
    sys.exit(0)  # don't forget to exit!


def worker():
    signal(SIGTERM, before_exit)
    time.sleep(10)

proc = multiprocessing.Process(target=worker, args=())
proc.start()
time.sleep(3)
proc.terminate()

在子进程终止之前产生所需的输出。