Python:运行一个即使在主进程完成后仍继续的进程/线程

时间:2014-07-09 14:32:34

标签: python

我想运行一个进程/线程,即使在主进程完成或被终止后也会继续运行。我应该怎么做呢?

编辑:如果它有所不同,子进程的要点是监视外部进程的状态。完成该过程后,子进程需要启动另一个进程到同一个外部系统。即使主程序完成,它也需要这样做,以便用户可以在其他地方继续工作,同时根据需要将新作业发送到系统。

1 个答案:

答案 0 :(得分:3)

如果您只想继续在子流程中执行,并退出当前流程,则只需使用os.fork

import os
import time


print('Before forking.')

if not os.fork():
    for i in range(5):
        print("Forkety fork, I'm forked!")
        time.sleep(1)

调用os.fork()基本上会复制您的进程,但对于父进程,os.fork()将返回子进程的PID,而对于子进程,它将返回0

if not os.fork()将不会在父进程中输入if分支,因为调用os.fork()的结果非零(即子进程的PID)。

在子进程中,os.fork()返回零,因此子进程进入if分支。


如果你想运行任何可执行文件(不一定是Python代码),你最好的选择是subprocess.Popen,如@khachik所述。