擅长:python、mysql、java
<p>观察到“缓慢”的两个主要原因:</p>
<ul>
<li>while循环很慢,它有大约一百万次迭代。</li>
<li>您没有正确使用I/O缓冲。不要打那么多系统电话。目前,您正在调用<code>write()</code>大约一百万次。</li>
</ul>
<p>首先在Python数据结构中创建数据,然后只调用<code>write()</code>一次</em>。</p>
<p>这样更快:</p>
<pre><code>t0 = time.time()
open("bla.txt", "wb").write(''.join(random.choice(string.ascii_lowercase) for i in xrange(10**7)))
d = time.time() - t0
print "duration: %.2f s." % d
</code></pre>
<p>输出:<code>duration: 7.30 s.</code></p>
<p>现在,程序将大部分时间花在生成数据上,即用<code>random</code>的东西。您可以很容易地看到,通过将<code>random.choice(string.ascii_lowercase)</code>替换为例如<code>"a"</code>。然后在我的机器上测量的时间降到1秒以下。</p>
<p>如果您想更进一步地了解机器在写入磁盘时的速度,请使用Python最快的(?)在将数据写入磁盘之前生成较大数据的方法:</p>
<pre><code>>>> t0=time.time(); chunk="a"*10**7; open("bla.txt", "wb").write(chunk); d=time.time()-t0; print "duration: %.2f s." % d
duration: 0.02 s.
</code></pre>