2016-04-27 17 views

回答

3

subprocess.call每次被調用時都會創建一個進程並等待命令完成。所以由於等待命令完成的性質,沒有真正的並行處理。

subprocess.Popen也會在每次被調用時創建一個進程,但不會等待命令完成。您可以使用communicate等待命令完成或撥打kill

所以總結一下。通過subprocess.Popen您可以更好地控制您創建的流程。

描述的python documentation

+0

如果我只是想執行一個命令,使用os.system和subprocess.call哪一個最好? –

+0

請注意,在python 3.5中有一個新的** run **函數可以做同樣的事情。 –

+0

如果你只是想執行一個命令並等待它完成'subprocess.call'應該沒問題。) – salomonderossi

1

是的,每次撥打subprocess.call()或其任何親屬(包括Popen())時都會產生一個新過程。你不需要通常明確地殺死子進程 - 你只是等待它們退出。

相關問題