2014-04-14 56 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