为什么这两个看似等效的脚本要花很长时间才能运行?

时间:2018-07-25 23:21:03

标签: python-2.7 time

我正在解释器中进行一些实验,有时我必须加载一个巨大的行分隔文件,并将其行连接在一起。我首先尝试过:

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)

有什么想法吗?

0 个答案:

没有答案