You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4B实时图像处理:如何让np.sum()自动实现多核并行?

关于NumPy在树莓派4B上实现np.sum()多核并行的问题

我在树莓派4B(四核ARM)上进行实时图像处理,处理的数据是2048×2048大小的uint8型8位无符号整数二维数组,其中关键操作是按行和列对数组求和,代码如下:

vertical   = np.sum(data, axis=0) 
horizontal = np.sum(data, axis=1)

我发现这些求和操作仅会占满一个CPU核心,其余三个核心处于闲置状态;但像a = np.dot(data, data)这类多线程NumPy操作则会占满四个核心。

为了加速,我手动启动四个独立线程拆分任务执行,各线程的操作如下:

# 线程1
vertical1   = np.sum(data[   0:1024,    :    ], axis=0)
# 线程2
vertical2   = np.sum(data[1024:2048,    :    ], axis=0)
# 线程3
horizontal1 = np.sum(data[    :    ,   0:1024], axis=1)
# 线程4
horizontal2 = np.sum(data[    :    ,1024:2048], axis=1)

线程执行完成后,我将两个垂直求和数组、两个水平求和数组分别相加,得到最终结果。

我想知道:是否可以通过配置或编译NumPy,让np.sum()自动实现上述的多核并行?毕竟部分线性代数例程显然已支持该特性。我曾尝试用np.dot()与全1向量点乘来实现求和,虽然能利用多核,但速度远慢于我手动拆分的四线程方案。

针对“Python仅支持单线程”的观点,这里引用Python文档内容说明:

……若使用NumPy进行数组操作,Python会释放全局解释器锁(GIL),这意味着采用NumPy风格编写代码时,大量计算可通过少量数组操作完成,从而借助多线程实现提速。

内容的提问来源于stack exchange,提问作者B A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:06:40