我有一个Python脚本,处理一个包含约400万行的巨大文本文件,并将数据写入两个单独的文件。
我添加了一个打印语句,为调试输出每一行的字符串。我想知道从性能角度来看会有多糟糕?
如果它性能非常糟糕,我可以删除调试语句。
编辑
事实证明,在一个有400万行的文件中为每一行添加打印语句会严重影响时间。
我有一个Python脚本,处理一个包含约400万行的巨大文本文件,并将数据写入两个单独的文件。
我添加了一个打印语句,为调试输出每一行的字符串。我想知道从性能角度来看会有多糟糕?
如果它性能非常糟糕,我可以删除调试语句。
编辑
事实证明,在一个有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
现在注释掉“print”并再次运行:
gp@imdev1 /tmp]$ time python large.py
real 0m2.584s
user 0m2.536s
sys 0m0.040s
> target.txt
运行时,会发生什么? - Timif False: print item
时,运行时间为 1.417秒,而没有任何打印输出则运行时间为 1.357秒。 - akozifor i,item in enumerate(range(4_000_000)): if i%1_000==0: print(i, item)
。 - ATH是的,它会影响性能。 我编写了一个小程序来演示-
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()
timeit
模块可以用来测量代码执行时间,它可以在不同的实现中比较代码速度。该模块提供了一个简单的接口来测试小块 Python 代码的执行时间。默认情况下,它执行测试的次数为一百万次,并返回最佳执行时间。你可以通过调整参数来定制测试行为。 - wimitem
发送到套接字队列:程序将首先完成写入,然后套接字的控制台将延迟打印输出。 - ajsp