[英]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.