IDLE是我最喜欢的Python编辑器。它提供了非常好的和直观的Python shell,对于单元测试和调试非常有用,并且是一个整洁的调试器。
但是,在IDLE下执行的代码非常慢。疯狂地我的意思是 3个数量级慢:
time echo "for i in range(10000): print 'x'," | python
需要0.052秒,
import datetime
start=datetime.datetime.now()
for i in range(10000): print 'x',
end=datetime.datetime.now()
print end-start
注意到:
>>> 0:01:44.853951
这大约慢了2000倍。
有任何想法或想法如何改善这一点?我想它在后台与调试器有关,但我不太确定。
亚当
答案 0 :(得分:30)
问题是文本输出而不是调试器。
我刚刚在我的Q6600(3GHz超频)系统上试过它,我的数字更糟糕。 但很容易看出它们正在减少更多的输出文本。
我尝试用
运行它1000次迭代=> 7,8秒 2000次迭代=> 28.5秒 3000次迭代=> 70秒
我过去做了一些低级别的TK,我知道TkText Widget将文本保持在BTree结构中。在一段时间内添加文本字符是最糟糕的方法之一,但这似乎是IDLE正在做的事情。通常的方法是捕获更多数据并附加更大的文本块。
令人惊讶的是,如果你写print'x \ n',输出会快得多。在7秒内完成3000次迭代,在19秒内完成10000次迭代。
所以问题肯定在于向现有线附加单个字符。 IDLE程序员不知道TkText是如何工作的。
因此建议在文本中添加更多换行符或输出更大的块,而不仅仅是单个“x”字符。
答案 1 :(得分:9)
问题在于Tkinter Text小部件,以及对非常长的行的低效管理,并且您创建了一个。 你会注意到,虽然很长的一行都是可见的,但所有的滚动都非常慢。