Python 多处理共享内存数组不允许 2-D 数组



我想将二维数组存储为共享内存数组,这样多处理模块创建的每个进程都可以访问二维数组。但似乎只允许向量。如果我把下面例子中的形状从(6,1(改为(2,3(,这个例子就不起作用了,它说"TypeError:只有长度为1的数组可以转换为Python标量">

from multiprocessing import Process, Value, Array
import numpy as np
def f(n,a):
    a[:] = np.ones(shape=(6,1), dtype=float)[:]
if __name__ == '__main__':
    tmp =  np.zeros(shape=(6,1), dtype=float)
    print tmp
    arr = Array('f', tmp)
    p1 = Process(target=f, args=(1,arr))
    p1.start()
    p1.join()
    print 'done'
    print arr[:]

这是因为mutiprocessing.Array是python的array类型的包装器,而不是numpy.ndarray,并且python的array类型不支持多维性。具体来说,请查看initializer:的文档

一个新数组,其项受类型代码限制,并从可选的初始值设定项值初始化,该值必须是列表、字符串或,可在适当类型的元素上迭代

您有一个可迭代的(多维数组(,但它产生的是视图/数组,而不是适当类型的元素。

相关内容

  • 没有找到相关文章

最新更新