我想运行一个即使在主进程完成或被终止后也能持续运行的进程/线程。我该怎么办?
编辑:如果有区别的话,子进程的重点是监视外部进程的状态。当该进程完成后,子进程需要启动同一外部系统的另一个进程。即使主程序完成后,它也需要这样做,以便用户可以在其他地方继续工作,同时根据需要将新作业发送到系统。
最佳答案
如果你只是想在子进程中继续执行,并退出当前进程,你可以简单地使用 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 提到的。
关于Python:运行一个进程/线程,即使在主进程完成后仍继续运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24656544/