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

Python多进程:传递单个multiprocessing.Array为何报错?如何解决?

解决multiprocessing仅传递Array时的TypeError问题

错误的核心原因是args参数的格式问题:在报错代码里,args=(arr)并没有创建一个包含单个元素的元组,Python会把multiprocessing.Array对象当作可迭代对象,将其内部的10个元素逐个拆解成参数传给函数f,但f只定义了1个参数,因此抛出「需要1个参数但传入了10个」的错误。

只需将单个参数包装成带逗号的元组,就能让Python识别这是一个元组参数,而非单个可迭代值。

修复后的完整代码:

from multiprocessing import Process, Array   

def f(a):
    for i in range(len(a)):
        a[i] = -a[i]

if __name__ == '__main__':
    arr = Array('i', range(10))

    # 关键:单个参数的元组必须加逗号
    p = Process(target=f, args=(arr,))
    p.start()
    p.join()

    print(arr[:])

重要提示

  • 使用multiprocessing.Process的args传递参数时,无论参数数量多少,都必须传入元组。
  • 传递单个参数时,必须写成(参数,)的形式,仅用(参数)会被Python解析成单个值,而非元组。

内容的提问来源于stack exchange,提问作者Andrew H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 20:42:05