我正在尝试限制Python使用的CPU数量(用于基准测试以及查看它是否加快了我的程序)。
我找到了一些用于实现此目的的Python模块('os','affinity','psutil'),除了他们更改关联的方法仅适用于Linux(有时是Windows)。还有一个建议是使用'taskset'命令(Why does multiprocessing use only a single core after I import numpy?),但据我所知,这个命令在macOS上不可用。
在macOS上运行Python / iPython时是否有(更好的清洁和简单)方式来更改关联?似乎改变Mac中的处理器关联性并不像其他平台那样容易(http://softwareramblings.com/2008/04/thread-affinity-on-os-x.html)。
答案 0 :(得分:3)
不可能。见Thread Affinity API Release Notes:
OS X不会导出标识处理器或控制线程放置的接口 - 不支持显式线程到处理器绑定。相反,内核管理所有线程放置。应用程序期望调度程序在大多数情况下使用与缓存关联性相关的良好处理器位置来运行其线程。
请注意,在优化程序时,您认为线程关联性相当晚,有一百万件事情会对您的程序产生更大的影响。
另请注意,Python在多线程开始时特别糟糕。