繁体   English   中英

在python中解析大型二进制文件的最快方法

[英]fastest way to parse large binary file in python

我有大约数十GB的文件,这些文件由10个左右的打包C结构组成。 我需要能够遍历文件中的每个结构进行分析,并希望能够在python代码中进行此分析。 我根本不需要写文件。

我不认为numpy可以在这里提供帮助,因为这些文件不仅仅是一个重复的结构。 我觉得struct.unpack太慢了。

到目前为止我的想法是使用Cython和mmap文件,然后迭代并将缓冲区转换为Cython C结构,以避免任何不必要的复制。 我遇到这种方法的障碍虽然是我不能直接使用Cython C结构指针并且需要有效地编写python包装类,这使得编写起来有点慢和乏味。 有人知道解决这个问题吗?

想知道是否有其他方法可行? 我还没有考虑过ctypes。

你确定复制实际上是问题吗? 这样的事情对你来说已经太慢了?

st = struct.Struct('>QLB')  # whatever
while True:
    data = fp.read(st.size)
    if not data:
        break
    a, b, c = st.unpack(data)
    do_something_with(a, b, c)

如果是这样,也许使用mmap和struct.unpack_from可以让你更快一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM