在使用多处理模块中的Pool对象时,进程数是否受CPU核心数限制?例如,如果我有4个核心,即使我创建了一个包含8个进程的池,一次只能运行4个核心?
根据这个问题和答案 - Python multiprocessing.cpu_count()在4核Nvidia Jetson TK1上返回'1' - Python multiprocessing.cpu_count()在某些系统上的功能输出反映了主动使用的CPU数量,而不是CPU的数量实际上可以通过调用Python程序使用.
一个常见的Python习惯用法是使用return-value cpu_count()来初始化a中的进程数Pool.但是,在使用这种"动态CPU激活"策略的系统上,该习惯用法相当严重(至少在相对静止的系统上).
是否有一些直接(和可移植)方式来获取Python 可用处理器的数量(与当前使用的数量相反)?
笔记:
这个问题是不被接受的答案来回答如何找出使用python CPU的数量,因为在上方挂了一个问题,说明这个问题,打印的内容/proc/self/status显示所有4个内核为可用的程序.
在我看来,"可移植"排除了涉及解析内容的任何方法/proc/self/status,其格式可能因Linux的发行版本而异,并且在OS X上甚至不存在.(对于任何其他伪文件也是如此,同样.)
因为编写将脚本数量传递给命令的shell脚本很常见,所以我很想知道在主流*Unix系统上获得处理器数量的好方法是什么.
事情是这样,但不依赖于Python的.
*通过主流,我的意思是,它将适用于今天生产中使用的流行的Unix系统(Linux/BSD/Darwin?但是越便携越好).