我正在执行统计测试,该测试使用10,000个排列作为空分布。
每个排列都是10,000个密钥字典。每个关键词都是一个基因,每个值都是一组对应基因的患者。该字典是以编程方式生成的,可以写入文件并从文件读入。
我希望能够迭代这些排列以执行我的统计测试;但是,将这个大型列表保留在堆栈上会降低我的性能。
有没有办法将这些词典保存在存储的内存中,并在迭代它们时产生排列?
谢谢!
答案 0 :(得分:2)
这是一个普遍的计算问题;你想要内存存储数据的速度,但没有足够的内存。您至少有以下选项:
由于您正在迭代数据集,因此一种解决方案可能是懒惰地加载数据:
def get_data(filename):
with open(filename) as f:
while True:
line = f.readline()
if line:
yield line
break
for item in get_data('my_genes.dat'):
gather_statistics(deserialize(item))
一种变体是将数据拆分为多个文件或将数据存储在数据库中,这样您就可以一次批量处理数据。