我在linux下有一個可執行文件。我有一個8核心處理器。我想用不同的參數運行同一個可執行文件的8個不同實例。如何使用python運行幾個可執行文件?
我試圖
os.system("process_name args")
它不會返回,直到該過程完成。
我想從python啓動8個不同的進程
如果有人能幫助我。
非常感謝
我在linux下有一個可執行文件。我有一個8核心處理器。我想用不同的參數運行同一個可執行文件的8個不同實例。如何使用python運行幾個可執行文件?
我試圖
os.system("process_name args")
它不會返回,直到該過程完成。
我想從python啓動8個不同的進程
如果有人能幫助我。
非常感謝
我認爲你正在尋找從subprocess
模塊Popen
對象。
請注意,如果您想要重定向I/O進出過程,則此方案變得複雜,因爲推薦的方法是調用.communicate()
,如果要管理多個,則無法使用該方法同時處理。在類UNIX系統上,可以將管道傳遞給select()
系統調用,以便您可以使用select
模塊執行I/O。這在Windows上不起作用,因爲select()
實現只接受套接字句柄。
非常感謝您的答案。我不想讓進程相互溝通。但應該單獨運行。在這種情況下,Popen是正確的選擇? – Shan 2012-03-15 17:05:05
'溝通()'不適用於彼此進行通信的進程。如果通過管道重定向I/O,則只有父進程(您的Python程序)與子進程「通信」。如果您不重定向子進程的I/O或將它重定向到文件,那麼您將不會有「通信問題」,並且只能使用.poll()和.returncode來查看進程是否完成。 – 2012-03-15 17:07:46
'Popen'是幾乎所有涉及使用Python的子進程的解決方案的正確解決方案。 – 2012-03-15 17:08:45
這些過程是否保證是Python程序,或者您是否希望啓動任何類型的通用程序? – 2012-03-15 17:03:28
我正在尋找一般的 – Shan 2012-03-15 17:06:29
他們可能但不一定是蟒蛇進程 – Shan 2012-03-15 17:07:29