在Python中检测*可用* CPU数量的便携方式

Posted pythonzhichan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Python中检测*可用* CPU数量的便携方式相关的知识,希望对你有一定的参考价值。

根据这个问题和答案 - 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 可用处理器的数量(与当前使用的数量相反)?

笔记:

  1. 这个问题是不被接受的答案来回答如何找出使用python CPU的数量,因为在上方挂了一个问题,说明这个问题,打印的内容/proc/self/status显示所有4个内核为可用的程序。

  2. 在我看来,“可移植”排除了涉及解析内容的任何方法/proc/self/status,其格式可能因Linux的发行版本而异,并且在OS X上甚至不存在。(对于任何其他伪文件也是如此,同样。)

 

解决方案


我不认为你会得到任何真正便携的答案,所以我会给出一个正确的答案。

正确*为Linux的回答是len(os.sched_getaffinity(pid)),哪里pid可能是0当前进程。这个函数在Python 3.3及更高版本中公开; 如果你以前需要它,你将不得不做一些奇特的cffi编码。

编辑:您可能会尝试查看是否可以使用函数(int omp_get_num_procs();如果存在),这是我在此问题上找到的唯一有意义的答案,但我还没有从Python中尝试过。

本文首发于Python黑洞网,博客园同步跟新

 

以上是关于在Python中检测*可用* CPU数量的便携方式的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式检测物理内核的数量

我可以设置 Java VM 可用的线程/CPU 数量吗?

在 python 2 或 python 3 中编写 csv 文件的便携方式

linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)

如何减少 Tensorflow/Keras 使用的 CPU 数量?

在运行时检测 C++ 中的堆碎片的便携式方法?