我有一个大的结构化二进制文件(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%的代码执行时间。如果数据存在于同一磁盘的不同分区上,则该值甚至更高。
是否有一种更高效或更省时的方法来完成这项工作?
暂无答案!
目前还没有任何答案,快来回答吧!