如果subprocess.call被調用了N次,我想知道是否會創建N子進程。在python中,subprocess.call會在每次調用時生成一個單獨的子進程嗎?
什麼時候子流程關閉?我應該手動殺死它嗎?
subprocess.Popen怎麼樣?
如果subprocess.call被調用了N次,我想知道是否會創建N子進程。在python中,subprocess.call會在每次調用時生成一個單獨的子進程嗎?
什麼時候子流程關閉?我應該手動殺死它嗎?
subprocess.Popen怎麼樣?
subprocess.call
每次被調用時都會創建一個進程並等待命令完成。所以由於等待命令完成的性質,沒有真正的並行處理。
subprocess.Popen
也會在每次被調用時創建一個進程,但不會等待命令完成。您可以使用communicate
等待命令完成或撥打kill
。
所以總結一下。通過subprocess.Popen
您可以更好地控制您創建的流程。
是的,每次撥打subprocess.call()
或其任何親屬(包括Popen()
)時都會產生一個新過程。你不需要通常明確地殺死子進程 - 你只是等待它們退出。
如果我只是想執行一個命令,使用os.system和subprocess.call哪一個最好? –
請注意,在python 3.5中有一個新的** run **函數可以做同樣的事情。 –
如果你只是想執行一個命令並等待它完成'subprocess.call'應該沒問題。) – salomonderossi