如何在Python 中啟動分離的後台進程
在後台運行進程對於Python 中的長時間運行或非交互式任務關重要。原始 shell 腳本使用「&」運算子來啟動進程,即使在腳本完成後,這些進程也會繼續執行。在 Python 中,實現類似的結果需要了解守護程式和適當的進程管理模組。
使用子進程模組
在 Python 中處理後台進程的建議方法是子流程模組。雖然 jkp 的解決方案很實用,但 subprocess 模組提供了更大的靈活性,並且與當前文件建議保持一致。
對於簡單指令,subprocess 模組的用法模仿 shell 腳本中的「&」運算子。考慮以下範例來啟動一個在背景刪除檔案的新進程:
import subprocess subprocess.Popen(["rm", "-r", "some.file"])
執行注意事項
呼叫.communicate() 方法從Popen 傳回的物件將阻塞主程序,直到後台程序完成。如果您希望後台程序保持分離,請避免呼叫 .communicate()。以下是此行為的說明:
import subprocess ls_output = subprocess.Popen(["sleep", "30"]) ls_output.communicate() # Blocks for 30 seconds
對於更高級的用例,子流程文件提供了有關流程管理的全面指導,包括輸入/輸出重定向和錯誤處理。
值得澄清這裡的「後台」指的是運行進程而不阻止其執行的 shell 概念,而不是作業系統意義上的守護程序的真正概念。
以上是如何在 Python 中運行分離的後台進程?的詳細內容。更多資訊請關注PHP中文網其他相關文章!