我正在尝试创建一个独立的幕后进程,该进程完全使用 python 独立运行。是否有可能创建这样一个进程,即使在退出 python 脚本之后,该进程仍然在后台运行。我使用 pyinstaller 创建了一个 .exe 文件,我希望该文件在后台运行,而不弹出控制台,这样用户就不会意识到该进程,除非他经常打开任务管理器。
多处理模块有助于创建进程,但它们在脚本执行完成后终止。与线程模块相同。
即使在脚本执行完毕后,是否有可能让某些特定的代码片段在后台运行?或者完全在后台启动整个脚本而不显示任何控制台?
我尝试使用多处理模块中的 Process 类和线程模块中的 Thread 类,但所有脚本执行后都退出。即使是 subprocess 和 os 模块也被证明没有帮助
from multiprocessing import Process
from threading import Thread
def bg_func():
#stuff
def main():
proc = Process(target=bg_func,args=()) #Thread alternatively
proc.start()
最佳答案
当我发现这个问题时,我能想到的唯一解决方案是执行Double Fork
。这是一个有效的示例。
import os
import time
from multiprocessing import Process
def bg():
# ignore first call
if os.fork() != 0:
return
print('sub process is running')
time.sleep(5)
print('sub process finished')
if __name__ == '__main__':
p = Process(target=bg)
p.start()
p.join()
print('exiting main')
exit(0)
输出显示子进程启动,主程序退出状态0
,我的提示在后台程序打印最后一行之前返回。我们在后台运行。 :D
[0] 10:58 ~ $ python3 ./scratch_1.py
exiting main
sub process is running
[0] 10:58 ~ $ sub process finished
关于python-3.x - 如何创建一个独立的进程让python在后台运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55538636/