我认为 Python 进程在终止时会调用它们的 atexit 函数。请注意,我使用的是 Python 2.7。这是一个简单的例子:
from __future__ import print_function
import atexit
from multiprocessing import Process
def test():
atexit.register(lambda: print("atexit function ran"))
process = Process(target=test)
process.start()
process.join()
我希望这会打印“atexit function run”,但事实并非如此。
注意这个问题: Python process won't call atexit 是类似的,但它涉及以信号终止的进程,答案涉及拦截该信号。这个问题中的进程正在优雅地退出,因此(据我所知)该问题和答案不适用(除非这些进程由于某种信号而退出?)。