根据这个问题和答案--Python multiprocessing.cpu_count() returns '1' on 4-core Nvidia Jetson TK1——在某些系统上,Python的multiprocessing.cpu_count()
函数的输出反映了活跃在使用中的cpu数量,而不是调用Python程序实际可用的cpu数量。在
一个常见的Python习惯用法是使用cpu_count()
的返回值初始化Pool
中的进程数。然而,在使用这种“动态CPU激活”策略的系统上,这个习惯用法非常糟糕(至少在相对静止的系统上)。在
有没有一些简单(可移植的)方法可以从Python获得可用的处理器数量(与当前使用的处理器数量相反)?在
注意事项:
这个问题不是由How to find out the number of CPUs using python的公认答案回答的,因为正如在这个问题顶部链接的问题中所指出的,打印/proc/self/status
的内容会显示所有4个核心都对程序可用。
在我看来,“可移植性”排除了任何涉及解析/proc/self/status
内容的方法,其格式可能因Linux版本而异,甚至在OS X上都不存在(其他伪文件也一样)。
使用psutil:
从文档https://psutil.readthedocs.io/en/latest/:
这是便携式的
我不认为你会得到任何真正方便的答案,所以我会给出一个正确的答案。在
Linux的正确答案是}可能是当前进程的
len(os.sched_getaffinity(pid))
,其中{0
。这个函数在python3.3和更高版本中公开;如果您在前面需要它,您必须进行一些奇特的cffi
编码。在编辑:你可以试试看是否可以使用函数
int omp_get_num_procs();
如果它存在,这是我在this question上找到的唯一有意义的答案,但我还没有从Python中尝试过。在相关问题 更多 >
编程相关推荐