2014-04-14 82 views
2

我使用multiprocessing.Pool()來並行化一些大熊貓處理,但發現它有點太成功。我的CPU使用率達到100%,整個計算機變得無法響應。即使鼠標變得難以使用。降低多處理的進程優先級。在Windows上的池

我可以用這段代碼改變我的進程的進程優先級。

import psutil 
p = psutil.Process(os.getpid()) 
p.nice = psutil.BELOW_NORMAL_PRIORITY_CLASS 

然而,當我看到在Windows任務管理器中我發現,只有主python.exe過程已被更改至低於正常優先級。

有沒有減少池進程優先級的好方法?

+0

你有沒有嘗試把你顯示的工作人員功能內的片段? –

+0

你爲什麼不生成更少的進程? – acushner

+0

@acushner我已經暫時砍掉它,使用7個「固定」它的池大小。但我想知道是否有更好的解決方案。 – JasonEdinburgh

回答

4

你可以嘗試設置你的進程的孩子產卵後的優先級。就像:

import psutil 

# spawn children and/or launch process pool here 

parent = psutil.Process() 
parent.nice(psutil.BELOW_NORMAL_PRIORITY_CLASS) 
for child in parent.children(): 
    child.nice(psutil.BELOW_NORMAL_PRIORITY_CLASS) 
+0

是的!謝謝..我必須修改一下。您可能需要修改你的誰比誰在parent.get_children()認爲這 – JasonEdinburgh

+0

父= psutil.Process() parent.nice = psutil.BELOW_NORMAL_PRIORITY_CLASS 兒童回答: child.nice = – JasonEdinburgh

+0

其他psutil.BELOW_NORMAL_PRIORITY_CLASS我發現這樣做的方式是使用ProcessHacker2。 http://processhacker.sourceforge.net/ – JasonEdinburgh