簡體   English   中英

python -c cmd將等待所有進程完成

[英]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()"

命令行將完成執行,直到新創建的進程本身完成為止。 這不是我想要的。

如何更改程序或如何編寫腳本以確保:

  1. 我可以在命令行中調用func();

  2. 當func()完成時,命令行將立即返回該值,並且不會等待新創建的進程。

  3. 新創建的進程可以繼續運行。

這是因為在async_process()中創建的子進程未與其父進程分離,因此父進程必須等待子進程完成后再退出。 如果要在Unix的術語中創建守護進程,則必須使用double-fork方法將子代與其父代分離,並將控制權移交給OS的調度程序。 似乎是在python中創建Unix守護進程的不錯方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM