2016-11-18 5 views
0

В настоящее время я использую python для работы на дампах памяти, созданных приложениями, такими как belkasoft, ftk-имидж и т. Д. Обычно они содержат расширение .mem или .dmp и форма:Чтение и обработка большого байт-файла с измененной энергией по байтам

53 FF 00 F0 53 FF 00 

Я хотел бы представить эти данные, скажем используйте Heatmap или использовать кривые, возможно, пытается визуализировать каждый байт. Это было бы 2147483648 байт в случае файла 2GB. Как бы вы приближаетесь чтения и обработки такого рода больших файлов> = 2 Гб

Я экспериментировал с чем-то вроде:

with open("File.mem",'rb') as file: 
    byte = file.read(1) 
    while byte: 
     Do something 

и удалось сделать некоторые расчеты, но его мучительно медленно я также пытался чтение строки строки за строкой, которая была быстрой, но снова чтение байтов каждой строки и выполнение некоторых преобразований также было очень медленным. Я читал и читал некоторые о numpy loadtxt, но не очень много экспериментировал с ним, подумал, что сначала спрошу здесь.

Любые идеи, которые могут удовлетворить этот сценарий и сделать его более эффективным?

спасибо

ответ

0

Обычный подход для чтения больших файлов является использование ММАПА. Содержимое файла сопоставляется с вашим пространством памяти процесса, и вы можете получить к нему доступ, читая данные из ОЗУ. ОС позаботится о загрузке необходимых данных в ОЗУ. Это похоже на работу файла подкачки. ОС знает, что данные находятся в файле и загружаются динамически при доступе к нему. OS также может выгружать данные из ОЗУ, если для этого нужна память для других целей, поскольку она всегда может загружать ее снова из файла.

Посмотрите на mmap модуль python.

+0

Большое спасибо, я экспериментировал с ним, и это очень быстро, очень ценится. –

 Смежные вопросы

  • Нет связанных вопросов^_^