2017-03-07 35 views
1

我想限制Python使用的CPU数量(用于基准测试&以查看它是否加快我的程序)。macOS上的Python 3:如何设置进程亲和力

我发现了几个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)那样容易。

回答

3

不可能。请参阅Thread Affinity API Release Notes

OS X不导出标识处理器或控制线程放置的接口 - 显式线程与处理器绑定不受支持。相反,内核管理所有线程放置。应用程序期望在大多数情况下,调度程序将使用关于高速缓存亲和性的良好处理器放置来运行其线程。

请注意,线程关联是您在优化程序时相当晚考虑的事情,有一百万件事情对程序产生较大影响。

另请注意,Python在多线程开始时尤其糟糕。