我有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? 你的处理器和速度是什么?