Cython使用类定义读取大型二进制文件

时间:2016-12-27 12:46:28

标签: class cython readfile large-files

我的代码尝试使用Structure类读取二进制文件:

import os
import mmap
from ctypes import Structure, c_uint

class StructFile(Structure):
    _pack_ = 1
    _fields_ = [('Xmin', c_uint),('Ymax', c_uint)]

fd = os.open(filePath, os.O_RDWR | os.O_BINARY)
mmap_file = mmap.mmap(fd, length=ln, access=mmap.ACCESS_WRITE, offset=0)
d_arrayFile = StructFile * numItems
data = d_arrayFile.from_buffer(mmap_file)
for i in data:
    print i.Xmin, i.Ymax

它工作正常,但我想使用cython类加速它。问题是当我使用cdef class StructFile(Structure):汇编时说:“'结构'不是类型名称”。

我怎样才能让cython将'Structure'识别为'int','object'等类型名称?或者任何其他优化代码的解决方案(不使用struct.unpack)。

谢谢!

0 个答案:

没有答案