首页 > 解决方案 > 如何以跨系统的方式将进程仅绑定到物理内核?

问题描述

我正在使用一个项目,每次将线程数加倍时,都会增加 40% 到 60% 的开销。由于超线程将性能提高到最大 30%,这意味着程序在超线程系统上的运行速度比单线程模式要慢。

第一步似乎很简单。

然而,这样做会出现几个问题。

问题是该程序目前通过 python3 支持多种平台:所有 Unix,以及 Windows、Osx 和 Openvms,同时不要忘记 PyPy。

任何修复问题的补丁都不应产生新进程,也不应添加不包含的依赖项,也不应放弃对上述某些平台的支持。

什么是解决此问题的干净方法?

标签: pythonpython-3.xcross-platformz3hyperthreading

解决方案


loky包含一个相当可移植的解决方案。它确实产生了一个进程,然后缓存了结果——所以它不像你不止一次地产生一个进程。鉴于这是支持流行库之类的解决方案sklearn,我猜它几乎和它一样好。


推荐阅读