【发布时间】:2009-05-13 23:21:09
【问题描述】:
这是previous one 的后续问题。
考虑一下这段代码,它比previous question 中的代码少玩具(但仍然比我的真实代码简单得多)
import sys
data=[]
for line in open(sys.argv[1]):
data.append(line[-1])
print data[-1]
现在,我期待更长的运行时间(我的基准文件有 65150224 行长),可能更长。事实并非如此,它在大约 2 分钟内运行在与以前相同的硬件上!
data.append() 是不是很轻量级?我不相信,所以我写了这个假代码来测试它:
data=[]
counter=0
string="a\n"
for counter in xrange(65150224):
data.append(string[-1])
print data[-1]
这在 1.5 到 3 分钟内运行(运行之间存在很大差异)
为什么我在前一个程序中没有得到 3.5 到 5 分钟的时间?显然 data.append() 与 IO 并行发生。
这是个好消息!
但是它是如何工作的呢?它是记录在案的功能吗?对我的代码是否有任何要求以使其尽可能地工作(除了负载平衡 IO 和内存/CPU 活动)?还是只是简单的缓冲/缓存在起作用?
再次,我将这个问题标记为“linux”,因为我只对特定于 linux 的答案感兴趣。如果您认为值得这样做,请随意给出与操作系统无关的甚至是其他操作系统的答案。
【问题讨论】:
-
这是不同的,但仍然值得一读:stackoverflow.com/questions/172720/speeding-up-python
标签: python linux performance text-files