[英]Understanding python multiprocessing: does code wait for all process to finish
[英]python -c cmd will wait all process finish
代碼:
檔案:script.py
from multiprocessing import Process
def func():
async_process()
print('OK')
return 123
def func2(args):
# do a lot of things here
# ...
pass
def async_process():
p = Process(target=func2, args=args)
p.daemon = False
p.start()
當我直接在Python腳本中調用func()時,我可以立即獲得返回值,這就是我所期望的。
但是,當我像這樣在命令行中調用func()時:
python -c "from script import func;func()"
命令行將完成執行,直到新創建的進程本身完成為止。 這不是我想要的。
如何更改程序或如何編寫腳本以確保:
我可以在命令行中調用func();
當func()完成時,命令行將立即返回該值,並且不會等待新創建的進程。
新創建的進程可以繼續運行。
這是因為在async_process()
中創建的子進程未與其父進程分離,因此父進程必須等待子進程完成后再退出。 如果要在Unix的術語中創建守護進程,則必須使用double-fork方法將子代與其父代分離,並將控制權移交給OS的調度程序。 這似乎是在python中創建Unix守護進程的不錯方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.