在Python脚本中使用print语句的性能影响

Sud*_*dar 26 python console text-files

我有一个Python脚本处理一个巨大的文本文件(大约4万行),并将数据写入两个单独的文件.

我添加了一个print语句,它为每行输出一个字符串以进行调试.我想知道从性能角度看它有多糟糕?

如果它非常糟糕,我可以删除调试行.

编辑

事实证明,对于包含400万行的文件中的每一行都有一个print语句会增加时间.

小智 33

尝试用一个非常简单的脚本来做它只是为了好玩,差别是非常惊人的:

在large.py中:

target =  open('target.txt', 'w')

for item in xrange(4000000):
    target.write(str(item)+'\n')
    print item
Run Code Online (Sandbox Code Playgroud)

时间安排:

[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
Run Code Online (Sandbox Code Playgroud)

现在运行相同的"打印"注释掉:

gp@imdev1 /tmp]$ time python large.py 
real    0m2.584s
user    0m2.536s
sys     0m0.040s
Run Code Online (Sandbox Code Playgroud)

  • 将stdout重定向到文件会快得多,实际上你可以直接到文件并在编辑器中打开文件的时间比向屏幕喷出大量io所花费的时间短. (9认同)
  • 当你注释掉写,留在打印中,并用`> target.txt`运行? (6认同)

小智 6

是的,它会影响性能。我写了一个小程序来演示-

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()
Run Code Online (Sandbox Code Playgroud)

测得的时间是-160.2812204496765 然后我通过pass替换了打印语句。结果令人震惊。测量的无打印时间为 - 0.26517701148986816。