從Python非同步執行外部命令
非同步執行外部命令是腳本場景中的常見需求。在 Python 中,這可以透過多種方法來實現。
一個選項是使用 os.system,它允許透過在末尾附加一個與號 (&) 來非阻塞地運行命令。然而,由於 shell 互動的潛在問題,這種方法已被棄用,不建議使用。
更優的方法是使用 subprocess.Popen,它為管理外部流程提供了更全面、更強大的 API。使用 Popen,可以非同步啟動命令,從而允許 Python 腳本在外部命令在後台運行時繼續執行。
from subprocess import Popen
p = Popen(['watch', 'ls']) # something long running
# ... do other stuff while subprocess is running
p.terminate()
在此範例中,建立了 Popen 實例,並傳遞指令及其參數。然後,Python 腳本可以在外部命令非同步運行時繼續執行其他任務。稍後,可以查詢 Popen 實例的狀態(例如,使用 poll())、與之通訊(例如,透過 communications())或終止。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3