我正在寫在python3.4管理2-3其他外部進程的守護進程拆卸處理。我試圖通過僅僅劃分他們所做的工作來避免GIL。這些其他過程本質上是暫時的。所以,我需要什麼:菌種和蟒蛇
從Python解釋器中啓動一個進程,並立即啓動它的一個卸下。我希望它們完全隔離而不共享stdout,stderr,stdin或其他資源。我不想等待進程退出,返回代碼,stdout,stderr或通過stdin提供數據。
根據該文檔,它現在推薦給子進程。這是我現在使用:
subprocess.Popen(["python3.4", daemonfile], env=env)
它的工作原理,但:
- 啓動進程時,輸出和錯誤都印製在主守護進程啓動時的同一控制檯上。我希望他們完全分離。
- 與「殼=真」,Python解釋進入「翻譯模式」代替。
- subprocess.Popen是建議贊成os.spawn的***調用
什麼是開始一個完全獨立的進程(從技術上說,甚至沒有一個孩子?)的最佳方式,並其完全脫落,從父母,使他們不共享資源?
沒有一點擔心GIL在這種情況下:CPython的每個進程都有自己的GIL。 – jfs
你可能不需要一個真正的守護進程,但這裏是[一個示例實現和描述(點擊pep鏈接)](https://pypi.python.org/pypi/python-daemon/) – jfs
這是錯誤的使用'shell = True'和一個列表參數。比較:'sh -c'python a.py''與'sh -c'python'a.py'(你不需要後者)。 – jfs