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

问题描述 投票:0回答:1

我需要使用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,那么print("Hello")将在主进程退出后的6秒内停止。

但是,如果我设置了p.daemon = False,主进程将不会按时退出,并且如果我按Ctrl + C强制退出主进程,则print("Hello")也将停止。

所以,即使退出了主进程,还有什么办法可以继续打印此“ Hello”?

python linux windows multiprocess
1个回答
0
投票

由于脚本是主进程,而启动的进程是子进程,所以我认为这是不可能的,因为当主进程死亡时,“子进程”被杀死。也许有一个fork选项,但是我想进程树仍然是分层的,因此您的“有趣”进程将被杀死。

您能否详细说明您要解决的用例。似乎应该用不同的体系结构解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.