IDLE是我最喜欢的Python编辑器。它提供了非常好和直观的Python shell,这对于单元测试和调试非常有用,以及一个整洁的调试器。
然而,在IDLE下执行的代码非常慢。疯狂的我指的是 3数量级 slow:
bash
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倍。
有什么想法或想法如何改进这一点吗?我猜这与后台的调试器有关,但我不是很确定。
亚当
发布于 2010-02-06 18:33:08
问题出在文本输出,而不是调试器。
我刚刚在我的Q6600 (3 3GHz超频)系统上试过了,我的数据更糟。但很容易看出,随着输出文本的增加,它们的数量也在下降。
我试着用它运行
1000次迭代7,8秒2000次迭代=> 28,5秒3000次迭代=> 70秒
我以前做过一些低级的TK工作,我知道TkText小部件将文本保存在BTree结构中。每次附加文本和字符是最糟糕的方法之一,但这似乎就是IDLE正在做的事情。通常的方法是捕获更多的数据并附加更大的文本块。
令人惊讶的是,如果你写成print 'x\n‘,输出速度要快得多。7秒内完成3000次迭代,19秒内完成10000次迭代。
因此,问题肯定是将单个字符添加到现有行。这个无所事事的程序员不知道TkText是如何工作的。
因此,建议在文本中添加更多换行符或输出更大的块,而不仅仅是一个'x‘字符。
发布于 2010-02-06 21:59:13
问题出在Tkinter文本小部件以及它对非常长的行的低效管理上,而您创建了一个。你会注意到,虽然一条很长的线的任何部分都是可见的,但所有的滚动都非常慢。
https://stackoverflow.com/questions/2212722
复制相似问题