如何在父进程退出时继续在python中启动线程?
问题描述:
我正在尝试为python中的slurm作业编写一个调度程序脚本。如何在父进程退出时继续在python中启动线程?
基本上,我有一个包含在函数中的脚本,我们称之为job_array_scheduler()
,它包含一个time.sleep()
循环。预计这将运行一天或更长时间。我想能够从python内部作为一个单独的线程启动这个功能,这样我就可以退出会话,并且这个东西将继续运行。
我试着做它像这样:
import threading
scheduler_thread = threading.Thread(target=job_array_scheduler, args=args, daemon=True)
scheduler_thread.start()
但这种退出,当我退出Python会话(即只是exit
)。
如何解决此问题,以保持上述线程活着,以便我可以退出python会话甚至将我的用户注销?
我能想到的是写另一个脚本环绕上面,这样我就可以从外壳后台运行,它做类似python wrapper_script.py &
但我宁愿避免,因为我将不得不只有这样,为每个我想要做的工作写一个单独的外部脚本。
使用'multiprocessing'而不是线程进程(在Python中,由于GIL,它不像你期望的那样工作) – GPhilo