use*_*424 3 python linux binary numpy
我有3000个已知格式的二进制文件(每个大小为40 [MB])(每个都有5,000,000''记录''int32,float32').它们是使用numpytofile()方法创建的.
我使用的方法WhichShouldBeUpdated(),确定应该更新哪个文件(3000个中),以及应该更改此文件中的哪些记录.方法的输出如下:
(1) path_to_file_name_to_update
(2)带有N记录的numpy记录数组(N是要更新的记录数),格式如下:[(recordID1, newIntValue1, newFloatValue1), (recordID2, newIntValue2, newFloatValue2), .....]
可以看出:
(1)要更新的文件仅在运行时才知道
(2)更新的记录也只在运行时知道
使用记录的新值更新文件的最有效方法是什么?
由于记录具有固定长度,您只需打开文件和seek位置,该位置是记录大小和记录偏移的倍数.要将int和float作为二进制编码,您可以使用struct.pack.更新:鉴于文件最初是由numpy生成的,最快的方式可能是numpy.memmap.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |