我有10,000个二进制文件,命名如下:
file0.bin
file1.bin
............ ............
file10000.bin
上述每个文件都包含391个浮点值(每个文件1564个字节)。
我的目标是以尽可能最快的方式将所有文件读入python数组。如果我打开&使用脚本关闭每个文件,需要花费很多时间(大约8分钟!)。 有没有其他创造性的方法快速阅读这些文件?
我正在使用Ubuntu Linux,并且更喜欢可以与Python一起使用的解决方案。感谢。
答案 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?什么是你的处理器及其速度?