Python 如何在主进程退出后保持子进程运行?
我需要使用python来启动一个完全独立的进程。这意味着即使主进程退出,子进程仍然可以运行 就像Linux中的shell一样: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
#./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')