【问题标题】:Reading and processing large volatile memory file byte by byte逐字节读取和处理大型易失性内存文件
【发布时间】:2017-04-02 00:17:30
【问题描述】:

我目前正在使用 python 处理由 belkasoft、ftk imager 等应用程序创建的内存转储,它们的扩展名通常为 .mem 或 .dmp,格式为:

53 FF 00 F0 53 FF 00 

我想可视化这些数据,比如说使用热图或使用曲线,可能会尝试可视化每个字节。如果是 2GB 文件,它将是 2147483648 字节。 您将如何读取和处理这种 >= 2GB 的大文件

我一直在尝试类似的东西:

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

并设法进行了一些计算,但速度非常慢 我还尝试逐行读取文件,这很快,但再次读取每一行的字节并进行一些转换也非常缓慢。 我也读过一些关于 numpy loadtxt 的文章,但没有做太多实验,我想先在这里问。

有什么想法可能适合这种情况并提高效率吗?

非常感谢

【问题讨论】:

    标签: python memory visualization large-files memory-dump


    【解决方案1】:

    读取大文件的常用方法是使用 mmap。文件内容映射到您的进程内存空间,您可以通过从 RAM 读取数据来访问它。操作系统负责将所需数据加载到 RAM 中。这类似于交换文件的工作方式。操作系统知道数据在文件中,并在您访问它时动态加载它。如果操作系统需要内存用于其他目的,它也可以从 RAM 中卸载数据,因为它总是可以从文件中再次加载它。

    看看mmappython模块。

    【讨论】:

    • 非常感谢,我已经尝试过了,它非常快,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 2019-09-28
    • 2011-12-14
    • 2017-07-15
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 2019-06-29
    相关资源
    最近更新 更多