我需要使用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
”呢?
答案 0 :(得分:0)
子流程模块可以做到。如果您有一个.py
文件,例如:
from subprocess import Popen
p = Popen([r'C:\Program Files\VideoLAN\VLC\vlc.exe'])
文件将很快结束运行并退出,但是vlc.exe
将保持打开状态。
在您的情况下,由于要使用其他功能,原则上可以将其分成另一个.py
文件
答案 1 :(得分:0)
multiprocessing
模块通常用于将一个大型任务拆分为多个子任务,并并行运行它们以提高性能。
在这种情况下,您需要使用subprocess
模块。
您可以将fun
函数放在单独的文件(sub.py
)中:
import time
while True:
print("Hello")
time.sleep(3)
然后您可以从主文件(main.py
)中调用它:
from subprocess import Popen
import time
if __name__ == '__main__':
Popen(["python", "./sub.py"])
time.sleep(6)
print('Parent Exiting')