2012-03-15 52 views
5

我在linux下有一個可執行文件。我有一個8核心處理器。我想用不同的參數運行同一個可執行文件的8個不同實例。如何使用python運行幾個可執行文件?

我試圖

 os.system("process_name args") 

它不會返回,直到該過程完成。

我想從python啓動8個不同的進程

如果有人能幫助我。

非常感謝

+0

這些過程是否保證是Python程序,或者您是否希望啓動任何類型的通用程序? – 2012-03-15 17:03:28

+0

我正在尋找一般的 – Shan 2012-03-15 17:06:29

+0

他們可能但不一定是蟒蛇進程 – Shan 2012-03-15 17:07:29

回答

6

我認爲你正在尋找從subprocess模塊Popen對象。

請注意,如果您想要重定向I/O進出過程,則此方案變得複雜,因爲推薦的方法是調用.communicate(),如果要管理多個,則無法使用該方法同時處理。在類UNIX系統上,可以將管道傳遞給select()系統調用,以便您可以使用select模塊執行I/O。這在Windows上不起作用,因爲select()實現只接受套接字句柄。

+0

非常感謝您的答案。我不想讓進程相互溝通。但應該單獨運行。在這種情況下,Popen是正確的選擇? – Shan 2012-03-15 17:05:05

+1

'溝通()'不適用於彼此進行通信的進程。如果通過管道重定向I/O,則只有父進程(您的Python程序)與子進程「通信」。如果您不重定向子進程的I/O或將它重定向到文件,那麼您將不會有「通信問題」,並且只能使用.poll()和.returncode來查看進程是否完成。 – 2012-03-15 17:07:46

+6

'Popen'是幾乎所有涉及使用Python的子進程的解決方案的正確解決方案。 – 2012-03-15 17:08:45

相關問題