【发布时间】:2015-03-16 18:30:21
【问题描述】:
我最近在运行计算密集型 python 程序(无线程)时意识到,在 Windows (Win8.1 x64) 下,没有一个 CPU 核心(我的 4 个逻辑核心、2 个物理核心)被完全占用,而是每个逻辑核心都被完全占用忙了约 25%。总而言之,这对应于一个核心 100% 繁忙。 Windows 是否分散了任务,但不是很好?这有什么关系,让核心尽可能冷吗?或者它与Python有关?我在 linux 下运行相同的程序,这里发生了我所期望的(一个核心 100% 忙)
【问题讨论】:
-
您可以尝试为您的进程设置处理器亲和性吗? Here are instructions 如何在 Windows 7 中执行此操作。在 8.1 中,您必须转到“详细信息”选项卡(现在无法给您屏幕截图,因为我只能访问德语本地化的 Win 8.1)。如果将关联设置为仅 1 个 CPU,则行为应该会改变。如果不是,那么奇怪的事情正在发生。但一般来说,不管它有什么原因,让你的操作系统的调度程序不管它的工作,让它自己工作。
-
是的,现在只有一个 CPU 100% 忙。此外,当我将任务优先级设置为实时(“Echttzeit”,我也是德国人)时,只有一个核心(但这次,半秒内使用了另一个核心,然后再次切换核心。我是只是困惑,这究竟是如何工作的,为什么Windows会这样做。我认为,Windows是一个接一个地强调核心,使每个核心的温度尽可能低,然后切换到下一个核心。但这些变化是为了为任务管理器快速解散。