我有一个 Python 脚本,它处理一个巨大的文本文件(大约 4 百万行)并将数据写入两个单独的文件。
我添加了一个打印语句,它为每一行输出一个字符串以进行调试。我想知道从性能的角度来看它有多糟糕?
如果它变得非常糟糕,我可以删除调试线。
编辑
事实证明,对于一个有 400 万行的文件中的每一行都有一个打印语句会增加太多时间。
我有一个 Python 脚本,它处理一个巨大的文本文件(大约 4 百万行)并将数据写入两个单独的文件。
我添加了一个打印语句,它为每一行输出一个字符串以进行调试。我想知道从性能的角度来看它有多糟糕?
如果它变得非常糟糕,我可以删除调试线。
编辑
事实证明,对于一个有 400 万行的文件中的每一行都有一个打印语句会增加太多时间。
尝试用一个非常简单的脚本来做这件事只是为了好玩,区别是非常惊人的:
在 large.py 中:
target = open('target.txt', 'w')
for item in xrange(4000000):
target.write(str(item)+'\n')
print item
计时:
[gp@imdev1 /tmp]$ time python large.py
real 1m51.690s
user 0m10.531s
sys 0m6.129s
gp@imdev1 /tmp]$ ls -lah target.txt
-rw-rw-r--. 1 gp gp 30M Nov 8 16:06 target.txt
现在运行相同的“打印”注释掉:
gp@imdev1 /tmp]$ time python large.py
real 0m2.584s
user 0m2.536s
sys 0m0.040s
是的,它会影响性能。我写了一个小程序来演示——
import time
start_time=time.time()
for i in range(100):
for j in range(100):
for k in range(100):
print(i,j,k)
print(time.time()-start_time)
input()
测得的时间是-160.2812204496765 然后我就顺便把print语句换掉了。结果令人震惊。没有打印的测量时间为 - 0.26517701148986816。