Python进程何时会终止



我使用multiprocessing在单个进程中处理大型excel文件(出于性能目的(。

import multiprocessing
def process_file_callback(filepath: str) -> None:
''' process big excel file here '''
def main() -> None:
for filepath in filepathes:
process_instance = multiprocessing.Process(target=process_file_callback, args=(filepath,))
process_instance.start()

例如,我正在创建200-500进程。现在想象一下我的系统停止工作的场景(我的意思是,我在终端中键入了CTRL+C(。我的script停止工作了,不是吗?其他流程呢?他们也被杀了?(我指的是哪个处理excel文件(。

如果父进程通过未处理的信号(如kill -9(意外死亡,则不会清理子进程。Python使用atexit模块来处理多处理的清理,只有当程序正常完成或调用sys.exit()时(而不是直接调用os._exit()时(,清理处理程序才会正常运行。值得注意的是,当发生异常并且没有被捕获时(如键盘中断(,在打印回溯后会调用sys.exit()。子进程在出口清理时的默认行为是join()它们。如果在主进程遇到异常后无法正常进行,则可能会发生死锁。如果主解释器被用户强制退出,孩子们就会变成僵尸。

最新更新