结论:,就我的目的而言,HDF5似乎是一条路。基本上"HDF5是一种用于存储和管理数据的数据模型、库和文件格式。“它被设计用来处理海量的数据。它有一个叫做Python -table的python模块。(链接在下面的答案中)
HDF5在节省吨和吨数据方面做得更好,达到了1000%。但是,从2亿行读取/修改数据是一项痛苦的工作,因此这是下一个要解决的问题。
我正在构建目录树,其中有大量的子目录和文件。大约有1000万个文件分布在10万个目录中。每个文件位于32个子目录下。
我有一个python脚本,它构建这个文件系统并读写这些文件。问题是,当我接触到超过一百万个文件时,读写方法变得非常缓慢。
下面是一个函数,它读取文件的内容(该文件包含一个整数字符串),向其中添加一个特定的数字,然后将其写回原始文件。
代码语言:javascript复制def addInFile(path, scoreToAdd):
num = scoreToAdd
try:
shutil.copyfile(path, '/tmp/tmp.txt')
fp = open('/tmp/tmp.txt', 'r')
num += int(fp.readlines()[0])
fp.close()
except:
pass
fp = open('/tmp/tmp.txt', 'w')
fp.write(str(num))
fp.close()
shutil.copyfile('/tmp/tmp.txt', path)关系数据库访问这些数据似乎太慢了,所以我选择了一种文件系统方法。我以前尝试过对这些命令执行linux控制台命令,但速度要慢得多。我首先将文件复制到一个临时文件,然后访问/修改它,然后将它复制回来,因为我发现这比直接访问该文件更快。将所有文件放入一个目录(以reiserfs格式)在访问这些文件时会造成太大的减速。我认为经济放缓的原因是因为有大量的文件。在不到1秒的时间内执行此功能1000次。但现在快到1分钟了。
你建议我怎么解决这个问题?是否更改目录树结构?
我所需要的就是快速访问这个非常庞大的文件池*中的每个文件