【发布时间】:2014-11-03 11:27:57
【问题描述】:
我有一个大 (21 GB) 文件,我想将其读入内存,然后传递给一个子程序,该子程序对我透明地处理数据。我在 Centos 6.5 上使用 python 2.6.6,因此升级操作系统或 python 不是一个选项。目前,我正在使用
f = open(image_filename, "rb")
image_file_contents=f.read()
f.close()
transparent_subroutine ( image_file_contents )
这很慢(约 15 分钟)。在开始阅读文件之前,我知道文件有多大,因为我调用 os.stat(image_filename).st_size
所以如果有意义的话,我可以预先分配一些内存。
谢谢
【问题讨论】:
-
更大的缓冲区可能会有所帮助
open(image_filename, 'rb', 64*1024*1024) -
您打算如何访问数据?随机访问?阅读一个块,处理,重复?还是您实际上需要将整个文件映射到内存中?
-
我不知道如何访问数据。它是 openstack 程序 Glance 的输入,它使用它来创建一个卷。我没有尝试更改缓冲区大小,这很聪明。
标签: python file binary memory-efficient