问题
This question concerns multiprocessing in python. I want to execute some code when I terminate the process, to be more specific just before it will be terminated. I'm looking for a solution which works as atexit.register
for the python program.
I have a method worker which looks:
def worker(): while True: print('work') time.sleep(2) return
I run it by:
proc = multiprocessing.Process(target=worker, args=()) proc.start()
My goal is to execute some extra code just before terminating it, which I do by:
proc.terminate()
回答1:
Use signal handling and intercept 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()
Produces the desirable output just before subprocess termination.
来源:https://stackoverflow.com/questions/42560706/how-to-execute-code-just-before-terminating-the-process-in-python