Python 中的非同步Shell 指令執行
為了方便在Python 腳本中非同步執行外部shell 指令,人們可以考慮使用外部shellos . system() 函數。然而,這種方法在命令結束時引入了 & 符號的使用,以避免同步行為。因此,它作為實現非同步執行的合適方法引發了人們的擔憂。
子流程:一個卓越的解決方案
取代 os.system(), subprocess 模組以 Popen 類別的形式提供了更合適的解決方案。此類可以非同步無縫執行長時間運行的命令,從而允許 Python 腳本在外部命令執行其任務時繼續其操作。
實現
來說明關於Popen 的用法,請考慮以下示例:
<code class="python">from subprocess import Popen # Initiate the long-running 'watch ls' command p = Popen(['watch', 'ls']) # Continue executing the Python script while the command runs # ... # Terminate the subprocess when necessary p.terminate()</code>
其他功能
除了非同步執行之外,Popen 實例還提供其他一些功能。值得注意的是,它允許透過 poll() 方法監視其執行狀態。此外,還可以利用 communications() 方法透過 stdin 交換資料並等待進程終止。
以上是如何在Python中實作非同步Shell指令執行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!