print()函数的第二个参数导致性能下降

时间:2015-01-13 23:22:20

标签: python

好。 我正在使用Python 3.3.2和IDLE。 我只是在交互式shell中玩,显示数字的字符表示,并注意到当我删除换行符时,它会大大影响性能。 这就是我这样做的方式。

for x in range(2056):print(chr(x),end='')

如果没有print()函数的第二个参数,它会顺利运行并需要几秒钟才能完成,但是当添加end =''时,就好像某人正在非常慢地输入字符并花费很长时间才能完成。 想知道这是否与我的设置有关,或者是否有其他人注意到这一点,以及它是否特定于IDLE,或者任何关于此的信息都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

这与IDLE需要将文本包装到窗口大小有关,这在print语句包含换行符时更容易。无线文本的大块越大,包裹所需的时间越长。由于IDLE保留了整个会话的历史记录,因此它可以在窗口中累积相当多的文本,这可能需要定期打包。

与其他程序相比,IDLE确实显得特别慢。

答案 1 :(得分:0)

根据我自己的经验,IDLE相当缓慢,尤其是换行时。控制台中存在轻微但不可解决的差异:

$ time python -c 'for x in range(2056):print(chr(x),end="")' > /dev/null
python -c 'for x in range(2056):print(chr(x),end="")' > /dev/null  0.02s user 0.02s system 98% cpu 0.041 total
$ time python -c 'for x in range(2056):print(chr(x))' > /dev/null 
python -c 'for x in range(2056):print(chr(x))' > /dev/null  0.03s user 0.01s system 92% cpu 0.036 total

尝试尝试IPython。对于这两个命令来说,它几乎是即时的,并且是比IDLE更好的重复。