Python和CPU使用情况

时间:2012-08-03 19:56:18

标签: python cpu

我使用Python编写了一段非常耗时的代码(包含大量递归)。我正在测试代码的运行时,我注意到无论代码有多复杂,Python都不会消耗我CPU的全部计算能力。我在Windows7上使用Intel双核运行Python,而Python从不使用超过1个CPU。基本上一个CPU正在运行而另一个CPU处于空闲状态。

有人可以解释一下后台发生了什么吗?提前谢谢!

3 个答案:

答案 0 :(得分:6)

您的脚本在单个进程中运行,因此在单个处理器上运行。 Windows调度程序可能会经常将它从一个核心移动到另一个核心,但它不能一次在多个位置运行单个进程。

如果您想要使用更多的CPU咕噜声,您需要弄清楚如何分割工作负载,以便在多个进程中运行代码的多个实例。

答案 1 :(得分:2)

如果python应用程序不是多线程的,那么它将不会使用超过1个cpu核心来执行。

答案 2 :(得分:2)

实际上,多线程Python应用程序不足以使用超过1个cpu核心。 Python使用一种称为“全局解释器锁”(GIL)的构造。 Python实例中的所有代码都必须获得此锁定,这意味着在Python应用程序中,即使您有多个处理器并且是多线程,在任何给定的时间点也只会执行一个代码线程

那就是说 - 如果你使用多处理模块,你可以使用多个核心:

import multiprocessing

def run():
    x = 1+1
    save(x)

if __name__=="__main__":
    for i in range(100):
        p = multiprocessing.Process(target=run)
        p.start()