如何限制Python使用的处理器数量

时间:2011-03-31 04:01:03

标签: python-3.x multiprocessing

我有一个相当内存昂贵的Python程序,可以在拥有8个CPU的计算机上运行(使用Python 3.1 64位)。问题是它使用所有8个处理器来达到100%的使用率,从而冻结机器并使事情变得缓慢。我如何让Python只使用7个处理器来释放更多的CPU?我已多次在多处理库中试验过Pool类,但没有运气。

例如,如果我想调用我的程序的主要功能并且只使用7个处理器,那么我需要做的就是以下内容,但没有运气:

来自多处理导入池 游泳池(7,主())

有谁能告诉我哪里出错了?谢谢!

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,我通过向游泳池分配少一个来解决这个问题:

pool= multiprocessing.Pool(processes=(multiprocessing.cpu_count() - 1))

通过执行此操作并让您的池仅使用CPU-1,您可以为PC节省一些额外的电量。 这对我的Windows机器有很大的帮助,所以我仍然可以点击其他应用程序(W7 64位)。在Linux上,无论哪种方式,机器都可以。

答案 1 :(得分:0)

你以某种方式创造了很多流程。这可以通过 os.system()os.popen*()os.spawn*()popen2subprocessmultiprocessing库中的方法。

如果你没有使用CPython而是使用其他Python实现,例如Jython或Stackless,你也可以通过线程使用多个内核。

你必须弄清楚你在做什么导致了这一点,然后确保你不会同时做超过7个。

答案 2 :(得分:0)

我不太确定你的情况,但有一件事可能对你有用,就是找出你拥有的核心数量(在python中你可以使用multiprocessing库),然后限制数量程序创建的线程/进程数少于此数字的一个。