我与主进程并行地为一些日志记录任务运行一个单独的进程。他们共享一些资源,我在主进程完成之前终止日志记录进程时遇到了问题。
完成主要的Python程序并保留子过程有什么缺点吗?我可以确定它会在退出主程序时终止吗?还是将Process.terminate()
称为主脚本中的最后一个调用会更好?
只要您启动的进程daemons
,主进程就会在退出之前自动终止它们:
daemon
进程的守护程序标志,一个布尔值。必须设置此项 在调用 start(( 之前。
初始值继承自创建过程。
当进程退出时,它会尝试终止其所有守护进程 子进程。
请注意,不允许守护进程创建子进程。 否则,守护进程将使其子进程成为孤儿,如果它 在其父进程退出时终止。此外,这些是 不是Unix守护程序或服务,它们是正常的进程,将是 如果非守护进程已退出,则终止(且未加入(。
此标志会自动为multiprocessing.Pool
创建的进程设置,但对于Process
对象默认为false
。父进程将尝试在所有非守护进程子进程上调用join
,因此,如果您有任何一个正在运行的子进程,它们将阻止父进程退出,直到它们退出自己。