gpt4 book ai didi

Python multiprocessing.cpu_count() 在 4 核 Nvidia Jetson TK1 上返回 '1'

转载 作者:太空狗 更新时间:2023-10-29 19:35:51 27 4
gpt4 key购买 nike

谁能告诉我为什么在具有四个 ARMv7 处理器的 Jetson TK1 上调用 Python 的 multiprocessing.cpu_count() 函数会返回 1

>>> import multiprocessing
>>> multiprocessing.cpu_count()
1

Jetson TK1 开发板或多或少是开箱即用的,没有人弄乱过 cpuset。在同一个 Python shell 中,我可以打印 /proc/self/status 的内容,它告诉我该进程应该可以访问所有四个内核:

>>> print open('/proc/self/status').read()
----- (snip) -----
Cpus_allowed: f
Cpus_allowed_list: 0-3
----- (snip) -----

还有什么可能导致 cpu_count() 出现这种行为?

编辑:

为了验证 Klaus 的假设,我使用以下代码运行了一个非常简单的实验:

import multiprocessing

def f(x):
n = 0
for i in xrange(10000):
n = max(n, multiprocessing.cpu_count())
return n

p = multiprocessing.Pool(5)
for i in range(10):
print p.map(f, [1,2,3,4,5])

产生了以下输出:

[3, 3, 3, 3, 1]
[4, 3, 3, 3, 3]
[4, 3, 3, 3, 3]
[3, 3, 4, 3, 3]
[4, 3, 3, 3, 3]
[3, 3, 4, 3, 3]
[4, 3, 3, 3, 3]
[3, 3, 4, 3, 3]
[3, 3, 3, 4, 3]
[4, 3, 3, 3, 3]

仅运行 p.map(f, [1,2,3,4,5]) 的一次迭代通常会产生 [1, 1, 1, 1, 1] ,尽管 2 偶尔会作为列表元素之一出现。

最佳答案

在 Linux 系统上 multiprocessing.cpu_count() 依赖于 sysconf (_SC_NPROCESSORS_ONLN) 调用,它返回 online CPU 的数量到 sysconf (_SC_NPROCESSORS_CONF),它返回 已配置 CPU 的数量。

在具有高级 CPU 电源管理功能(将 CPU 内核设置为离线以节省能源)或具有类似动态 CPU 激活功能的系统中,这些值可能会有所不同。

关于Python multiprocessing.cpu_count() 在 4 核 Nvidia Jetson TK1 上返回 '1',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31344582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com