簡體   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