我想运行一个进程/线程,即使在主进程完成或被终止后也会继续运行。我应该怎么做呢?
编辑:如果它有所不同,子进程的要点是监视外部进程的状态。完成该过程后,子进程需要启动另一个进程到同一个外部系统。即使主程序完成,它也需要这样做,以便用户可以在其他地方继续工作,同时根据需要将新作业发送到系统。
答案 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所述。