如何在python中启动线程,在父进程退出时将继续?

时间:2017-09-22 11:30:09

标签: python multithreading subprocess daemon scheduler

我正在尝试在python中为slurm作业编写一个调度程序脚本。

基本上,我有一个包含在函数中的脚本,我们称之为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会话甚至关闭我的用户?

我能想到的唯一方法就是编写另一个脚本来包装上面的内容,所以我可以在shell的后台运行它来做python wrapper_script.py &这样的事情但是我更喜欢为了避免这种情况,因为我必须为每个我想做的工作编写一个单独的外部脚本。

1 个答案:

答案 0 :(得分:0)

不要退出流程(线程是流程的一部分,不能超过流程)。你想要的是daemonize (or detach)这个过程。