我正在解释器中进行一些实验,有时我必须加载一个巨大的行分隔文件,并将其行连接在一起。我首先尝试过:
strand = ['', '']
for i in range(1, 3):
for line in open('chr2_strand_' +str(i) + '.fa').readlines()[1:]:
strand[i] += line.strip()
几分钟后我杀死了它,它仍在运行。接下来,我尝试了这个:
strand = ['', '']
for i in range(1, 3):
s = ''
for line in open('chr2_strand_' +str(i) + '.fa').readlines()[1:]:
s += line.strip()
strand[i - 1] = s
运行不到一分钟。
脚本中正在读取两个文件,每个文件都接近300MB,每行包含100个字符。
区别在于直接更新strand
数组,而不是为其分配最终的串联结果。我不明白为什么这会影响运行时间,因为数组的大小保持不变(两个对字符串的引用),这意味着它不需要重新定位。
Python版本为Python 2.7.12 (default, Dec 4 2017, 14:50:18)
。
有什么想法吗?