Python:为什么 IDLE 这么慢?

2024-04-29

IDLE http://en.wikipedia.org/wiki/IDLE_(Python)是我最喜欢的 Python 编辑器。它提供了非常漂亮且直观的 Python shell,对于单元测试和调试非常有用,并且还提供了一个简洁的调试器。

然而,在 IDLE 下执行的代码速度非常慢。我所说的疯狂是指3个数量级 slow:

bash

time echo "for i in range(10000): print 'x'," | python

需要0.052秒,

IDLE

import datetime
start=datetime.datetime.now()
for i in range(10000): print 'x',
end=datetime.datetime.now()
print end-start

Takes:

>>> 0:01:44.853951

这大约慢了 2,000 倍。

有什么想法或想法如何改善这一点?我猜这与后台的调试器有关,但我不太确定。

Adam


问题是文本输出而不是调试器。

我刚刚在我的 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”字符。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:为什么 IDLE 这么慢? 的相关文章

随机推荐