我知道这似乎是一个荒谬的问题,但是我必须在与部门中其他人共享的计算服务器上定期运行作业,当我开始10个作业时,我真的希望它只占用10个核心而不是更多; 我不在乎每次运行一个内核所需的时间是否更长:我只是不想让它侵占其他人的领土,这将需要我放弃工作等等。我只想拥有10个坚实的核心,仅此而已。
更具体地说,我在基于Python 2.7.3和numpy 1.6.1的Redhat上使用Enthought 7.3-1,但问题更笼统。数小时以来,我一直在搜寻该问题的某种答案,但无济于事,因此,如果有人知道numpy中的开关可能会关闭多线程,请告诉我。
将MKL_NUM_THREADS环境变量设置为1。您可能已经猜到了,这个环境变量控制着Math Kernel Library的行为,该行为包含在Enthoughtnumpy构建中。
MKL_NUM_THREADS
numpy
我只是在启动文件.bash_profile中使用来执行此操作export MKL_NUM_THREADS=1。您还应该能够从脚本内部执行此操作,以使其具有特定于进程的功能。
export MKL_NUM_THREADS=1