观察到的“缓慢”的两个主要原因:
- 您的while循环很慢,大约有一百万次迭代。
- 您没有正确使用I / O缓冲。不要进行太多系统调用。目前,您正在拨打
write()
约一百万次。
首先在Python数据结构中创建数据,然后
write()仅调用 一次 。
这样更快:
t0 = time.time()open("bla.txt", "wb").write(''.join(random.choice(string.ascii_lowercase) for i in xrange(10**7)))d = time.time() - t0print "duration: %.2f s." % d输出:
duration: 7.30 s.
现在,该程序将大部分时间花费在生成数据上,即
random填充数据。您可以轻松替换
random.choice(string.ascii_lowercase)为例如
"a"。然后,在我的机器上,所测量的时间降至一秒以下。
而且,如果您想进一步了解写入磁盘时机器的速度,请在写入磁盘之前使用Python最快的(?)方式生成较大的数据:
>>> t0=time.time(); chunk="a"*10**7; open("bla.txt", "wb").write(chunk); d=time.time()-t0; print "duration: %.2f s." % dduration: 0.02 s.


