快速读取10000个二进制文件?

时间:2011-03-03 23:00:41

标签: python linux

我有10,000个二进制文件,命名如下:

file0.bin

file1.bin

............ ............

file10000.bin

上述每个文件都包含391个浮点值(每个文件1564个字节)。

我的目标是以尽可能最快的方式将所有文件读入python数组。如果我打开&使用脚本关闭每个文件,需要花费很多时间(大约8分钟!)。 有没有其他创造性的方法快速阅读这些文件?

我正在使用Ubuntu Linux,并且更喜欢可以与Python一起使用的解决方案。感谢。

3 个答案:

答案 0 :(得分:3)

如果你想更快地制作ramdisk:

# mkfs -q /dev/ram1 $(( 2 * 10000)) ## roughly the size you need
# mkdir -p /ramcache
# mount /dev/ram1 /ramcache
# df -H | grep ramcache

现在concat

# cat file{1..10000}.bin >> /ramcache/concat.bin ## thanks SiegeX

然后让你的脚本在该文件上

因为我没有测试过我用“#”作为前缀,所以你不会发生任何意外。如果你想让它工作,只需删除它们。

这是一个选项,但我建议您考虑查看人们在您的Q下直接发布的评论 你可能会得到更好的结果,检查你做错了什么,因为我无法重现你8分钟的速度问题。

答案 1 :(得分:0)

迭代它们并使用优化标志你可能也想用pypy解析它们它通过JIT编译器编译python,允许速度略微显着增加。

答案 2 :(得分:0)

您有10001个文件(0到10000,包括0和10000),运行以下内容需要8分钟?

try: xrange # python 2 - 3 compatibility
except NameError: xrange= range

import array

final= array.array('f')

for file_seq in xrange(10001):
    with open("file%d.bin" % file_seq, "rb") as fp:
        final.fromfile(fp, 391)

什么是底层文件系统?你有多少RAM?什么是你的处理器及其速度?