【发布时间】:2015-04-09 15:45:53
【问题描述】:
我有一个 python 脚本可以处理几个千兆字节的文件。使用下面显示的以下代码,我将一些数据存储到一个列表中,该列表存储在字典snp_dict 中。 RAM消耗量很大。查看我的代码,您能否提出一些减少 RAM 消耗的方法(如果有)?
def extractAF(files_vcf):
z=0
snp_dict=dict()
for infile_name in sorted(files_vcf):
print ' * ' + infile_name
###single files
vcf_reader = vcf.Reader(open(infile_name, 'r'))
for record in vcf_reader:
snp_position='_'.join([record.CHROM, str(record.POS)])
ref_F = float(record.INFO['DP4'][0])
ref_R = float(record.INFO['DP4'][1])
alt_F = float(record.INFO['DP4'][2])
alt_R = float(record.INFO['DP4'][3])
AF = (alt_F+alt_R)/(alt_F+alt_R+ref_F+ref_R)
if not snp_position in snp_dict:
snp_dict[snp_position]=list((0) for _ in range(len(files_vcf)))
snp_dict[snp_position][z] = round(AF, 3) #record.INFO['DP4']
z+=1
return snp_dict
【问题讨论】:
-
使用数据库...将记录存储在那里而不是在内存中...
-
试试
shelve标准库模块。 -
if not snp_position in snp_dict看起来很可疑,你打算这样做if snp_position not in snp_dict吗?
标签: python memory memory-management dictionary