我在 Stack Overflow 中发现了一些类似的问题,但我相信我可以从针对我的案例的特定建议中受益。
我必须将大约 80,000 个实数值列表存储在一个文件中,然后再将它们读回。
首先,我尝试cPickle
了,但阅读时间并不吸引人:
>>> stmt = """
with open('pickled-data.dat') as f:
data = cPickle.load(f)
"""
>>> timeit.timeit(stmt, 'import cPickle', number=1)
3.8195440769195557
然后我发现将数字存储为纯文本可以更快地阅读(有道理,因为cPickle
必须担心很多事情):
>>> stmt = """
data = []
with open('text-data.dat') as f:
for line in f:
data.append([float(x) for x in line.split()])
"""
>>> timeit.timeit(stmt, number=1)
1.712096929550171
这是一个很好的改进,但我认为我仍然可以以某种方式对其进行优化,因为用其他语言编写的程序可以更快地从文件中读取类似的数据。
有任何想法吗?