0

我有一个大的结构化二进制文件(2.1GB),每个数据包中有一段标头和所需数据,正在将其读入易失性存储器以加快访问速度。为此,我目前正在使用带有自定义数据类型的 numpy 的 memmap 工具来检索所需的数据集,使用下面显示的 cython 过程,

    #Code for illustration only 
 
    data1     = np.memmap(file_name,  dtype = dt, mode = 'c')
    data2     = np.memmap(file_name1, dtype = dt, mode = 'c')

    cdef np.ndarray lin1                =       np.zeros((len(data1)), dtype = np.int32)
    cdef np.ndarray lin2                =       np.zeros((len(data2)), dtype = np.int32)
    cdef int i
    for i in range(len(data1)):
        lin1[i]                         =       data1['Packet'][i]
        lin2[i]                         =       data2['Packet'][i]

现在,理想情况下,我希望在此 IO 操作上花费尽可能少的时间,因为数据集的进一步处理在计算上非常大,并且有多个可用的此类文件集需要类似的处理。此 IO 操作占用了将近 40% 的代码执行时间。如果数据存在于同一磁盘的不同分区上,则该值会更高。

有没有更有效或更省时的方法来做到这一点?

4

0 回答 0