是否有任何全局参数(最好是env变量)可以设置为限制Python使用的最大内核? 我知道有特定包的参数设置,如多线程或numpy,但我想控制Python本身,以便我确信它不会使用超过N个核心。
我想要一个全局参数的原因是我可以将它设置为我的网络中的用户,以便我们能够在同一台机器上一起工作;目前只要有人运行脚本,Python就会使用最多的核心,干扰其他核心。
Python版本2.6-7,Ubuntu版本14.04。
感谢。
答案 0 :(得分:0)
使用affinity包,您可以将操作系统级别上的每个进程限制为单核心。 affinity只调用底层的Linux sched_setaffinity函数,您可以将其设置为特定的核心编号或范围。
import affinity
import os
pid = os.getpid()
affinity.set_process_affinity_mask(pid, 1) # 1 is the first core
affinity.set_process_affinity_mask(pid, 2) # 2 is the second core
请参阅pthread_setaffinity_np man page以获取有关如何设置核心范围的更多详细信息,请注意,如果要设置其他进程的关联,则应具有管理该进程的权限。 此外,请注意子进程继承父进程的亲和力。