用 Python 读取大型二进制文件的最快方法

RTC*_*222 2 python python-3.x

我需要在 Python 3.6 中读取一个简单但大(500MB)的二进制文件。该文件是由 C 程序创建的,它包含 64 位双精度数据。我尝试使用 struct.unpack 但这对于大文件来说非常慢。

这是我读取的简单文件:

def ReadBinary():

    fileName = 'C:\\File_Data\\LargeDataFile.bin'

    with open(fileName, mode='rb') as file:
        fileContent = file.read()
Run Code Online (Sandbox Code Playgroud)

现在我有文件内容。将其解码为 64 位双精度浮点或无需进行格式转换即可读取的最快方法是什么?

如果可能,我想避免分块读取文件。我想一口气读完它,就像 C 一样。

Sha*_*ger 6

您可以使用array.array('d') fromfile方法:

def ReadBinary():
    fileName = r'C:\File_Data\LargeDataFile.bin'

    fileContent = array.array('d')
    with open(fileName, mode='rb') as file:
        fileContent.fromfile(file)
    return fileContent
Run Code Online (Sandbox Code Playgroud)

这是作为原始机器值的 C 级读取。mmap.mmap还可以通过创建工作memoryview中的mmap对象和铸造它。