Python 如何在主进程退出后保持子进程运行?

Python 如何在主进程退出后保持子进程运行?,python,linux,windows,multiprocess,Python,Linux,Windows,Multiprocess,我需要使用python来启动一个完全独立的进程。这意味着即使主进程退出,子进程仍然可以运行 就像Linux中的shell一样: #./a.out & 然后,即使ssh连接丢失,那么a.out仍可以继续运行 我需要一种类似但统一的方式跨Linux和Windows 我试过多处理模块 import multiprocessing import time def fun(): while True: print("Hello") time.sleep(3

我需要使用python来启动一个完全独立的进程。这意味着即使主进程退出,子进程仍然可以运行

就像Linux中的shell一样:

#./a.out &
然后,即使ssh连接丢失,那么
a.out
仍可以继续运行

我需要一种类似但统一的方式跨Linux和Windows

我试过多处理模块

import multiprocessing
import time
def fun():
    while True:
        print("Hello")
        time.sleep(3)

if __name__ == '__main__':
    p = multiprocessing.Process(name="Fun", target=fun)
    p.daemon = True
    p.start()
    time.sleep(6)
如果我设置
p.daemon=True
,那么
打印(“Hello”)
将在主进程退出后的6s内停止

但是如果我设置
p.daemon=False
,主进程将不会按时退出,如果我按CTRL+C强制退出主进程,则
打印(“Hello”)
也将停止


那么,即使主进程已经退出,保持打印此“
Hello
”是否有任何方法?

子进程模块也可以这样做。如果您有这样一个
.py
文件:

from subprocess import Popen
p = Popen([r'C:\Program Files\VideoLAN\VLC\vlc.exe'])
文件将很快结束运行并退出,但
vlc.exe
将保持打开状态


在您的情况下,由于您想使用另一个函数,原则上可以将其拆分为另一个
.py
文件多处理
模块通常用于将大型任务拆分为多个子任务,并并行运行以提高性能

在这种情况下,您需要使用
子流程
模块

您可以将
fun
函数放在单独的文件中(
sub.py
):

然后可以从主文件(
main.py
)调用它:

“sub.py”应该相对于当前脚本目录进行引用:
sub\u path=os.path.join(os.path.abspath(os.path.dirname(\uu file\uuuuu)),'sub.py')
。工作目录(即“”)可以是任何内容。
import time

while True:
    print("Hello")
    time.sleep(3)
from subprocess import Popen
import time

if __name__ == '__main__':
    Popen(["python", "./sub.py"])
    time.sleep(6)
    print('Parent Exiting')