【发布时间】:2013-04-30 15:17:38
【问题描述】:
尝试使用此处的代码https://stackoverflow.com/a/15390953/378594 将 numpy 数组转换为共享内存数组并返回。运行以下代码:
shared_array = shmarray.ndarray_to_shm(my_numpy_array)
然后将 shared_array 作为参数传递到多处理池的参数列表中:
pool.map(my_function, list_of_args_arrays)
list_of_args_arrays 包含我的共享数组和其他参数。
导致如下错误
PicklingError: Can't pickle <class 'multiprocessing.sharedctypes.c_double_Array_<array size>'>: attribute lookup multiprocessing.sharedctypes.c_double_Array_<array size> failed
<array_size> 是我的 numpy 数组的线性大小。
我猜 numpy ctypes 或类似的东西发生了变化?
更多详情:
我只需要访问共享信息。进程不会进行任何编辑。
调用池的函数位于一个类中。类被初始化,函数被main.py文件调用。
【问题讨论】:
标签: python numpy multiprocessing pickle