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

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

file0.bin

file1.bin

………… …………

file10000.bin

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

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

我正在使用Ubuntu Linux,并希望可以使用Python的解决scheme。 谢谢。

如果你想更快地制作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分钟。

迭代他们和使用优化标志,你可能也想用pypy来解析它们,它通过一个JIT编译器编译python,允许在一定程度上显着提高速度。

您有10001个文件(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? 你的处理器和速度是什么?