相关疑难解决方法(0)

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

任何人都可以告诉我为什么Python的multiprocessing.cpu_count()功能会1在调用带有四个ARMv7处理器的Jetson TK1时返回?

>>> import multiprocessing
>>> multiprocessing.cpu_count()
1
Run Code Online (Sandbox Code Playgroud)

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

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

还有什么可能导致这种行为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])
Run Code Online (Sandbox Code Playgroud)

其中产生了以下输出:

[3, 3, 3, 3, 1]
[4, 3, 3, 3, 3]
[4, 3, 3, 3, 3]
[3, 3, …
Run Code Online (Sandbox Code Playgroud)

python cpu python-multiprocessing

11
推荐指数
2
解决办法
2万
查看次数

标签 统计

cpu ×1

python ×1

python-multiprocessing ×1