2010-02-08 62 views
3

我有一個需要執行的進程池。我想充分利用這臺機器,這樣所有的CPU都在執行進程。我不想過度訂閱系統,所以我真正想要的是#execution_processes =#cpus在任何特定時刻。 我還需要存儲每個完成的進程的stdout,stderr和返回碼。 這怎麼能在Python中實現?簡單的例子,在Python中進程的排程安排?

編輯:'進程'我的意思是一個shell進程。

+0

「#execution_processes =#cpus」將不能充分利用您的系統。由於單個進程很少使用100%的資源,因此您應該刪除對此問題的限制。 – 2010-02-08 09:47:32

+0

一般而言,您的聲明是正確的,但在我的特殊情況下,每個進程的CPU利用率達到100%。 – 2010-02-08 11:31:56

+0

@zr:絕對100%,所有的時間?它不可能擁有一個永遠不會發出單個系統請求並永不等待資源的進程,但會立即增加100%的CPU使用率。這聽起來像只出現在作業問題中的那種人爲約束。 – 2010-02-08 13:03:53

回答

2

如果你正在談論自己,Python的實現過程:

multiprocessing模塊使您能夠生成多個流程的能力。特別是,它聽起來像你想要創建multiprocessing.cpu_count個進程,可能在Pool

如果你在談論要通過shell執行單獨的程序:

subprocess模塊將讓你產卵通過其Popen類,它有參數stdinstdoutsterr接受過程類似文件的對象。可以用Popen.returncode來檢查返回碼。

+0

我指的是後者。 – 2010-02-08 07:50:10