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

问题描述 投票:0回答:1

这个问题涉及 python 中的多处理。我想在终止进程时执行一些代码,更具体地说,是在终止进程之前执行一些代码。我正在寻找一个可以作为 python 程序的

atexit.register
工作的解决方案。

我有一个方法工作者,它看起来:

def worker():
    while True:
        print('work')
        time.sleep(2)
    return

我运行它:

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

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

proc.terminate()
python multiprocessing python-multiprocessing
1个回答
4
投票

使用信号处理并拦截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()

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

© www.soinside.com 2019 - 2024. All rights reserved.