我想使用multiprocessing
模块来完成此操作。
当我这样做时,比如:
$ python my_process.py
我启动父进程,然后让父进程生成子进程
然后我希望父进程退出,但子进程继续工作。
请允许我写一个错误代码来解释自己:
from multiprocessing import Process
def f(x):
with open('out.dat', 'w') as f:
f.write(x)
if __name__ == '__main__':
p = Process(target=f, args=('bbb',))
p.daemon = True # This is key, set the daemon, then parent exits itself
p.start()
#p.join() # This is WRONG code, just want to exlain what I mean.
# the child processes will be killed, when father exit
那么,如何在父进程完成时启动一个不会被杀死的进程?
20140714
大家好,你们
我的朋友告诉我一个解决方案......
我只是想......
无论如何,让你看看:
import os
os.system('python your_app.py&') # SEE!? the & !!
这确实有用!!
答案 0 :(得分:6)
技巧:调用os._exit
使父进程退出,这样就不会杀死守护进程子进程。
但是还有一些其他的副作用,在doc中描述:
Exit the process with status n, without calling cleanup handlers,
flushing stdio buffers, etc.
如果你不关心这个,你可以使用它。
答案 1 :(得分:0)
这是一种实现独立的子进程的方法,该子进程在__main__
退出时不会退出。它使用@WKPlus上面提到的os._exit()
技巧。
Is there a way to detach matplotlib plots so that the computation can continue?