我正在尝试使用Cython和multiprocessing包在共享内存中定义一个数组。但是,我无法在.pxd文件中声明此数组。
以下是简单的测试代码。我有一个名为Data的Cython类,其中包含变量my_data。这个变量my_data将是共享数组。
Data.pxd:
cimport numpy as np
cdef class Data:
cdef public np.ndarray my_data
Data.pyx:
cdef class Data:
def __init__(self):
pass
然后,我在主文件中声明了共享数组:
主文件.py:
# -*- coding: utf-8 -*-
import pyximport;
import numpy as np
from multiprocessing import Array
pyximport.install(setup_args={"include_dirs":np.get_include()},)
from Data import *
### Create Data
N = 1500
dc = Data()
dc.my_data = Array('d', N, lock=False)
运行 main_file.py 时出现 TypeError:
TypeError: Cannot convert c_double_Array_1500 to numpy.ndarray
我尝试将my_data声明为cpython数组,但是它会出现相同的TypeError错误。 有没有一种方法可以在Data.pxd中声明my_data,以便可以与多进程共享?