首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:为什么空闲这么慢?

Python:为什么空闲这么慢?
EN

Stack Overflow用户
提问于 2010-02-06 17:58:20
回答 2查看 13.1K关注 0票数 24

IDLE是我最喜欢的Python编辑器。它提供了非常好和直观的Python shell,这对于单元测试和调试非常有用,以及一个整洁的调试器。

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

bash

代码语言:javascript
复制
time echo "for i in range(10000): print 'x'," | python

耗时0.052秒,

空闲

代码语言:javascript
复制
import datetime
start=datetime.datetime.now()
for i in range(10000): print 'x',
end=datetime.datetime.now()
print end-start

需要:

代码语言:javascript
复制
>>> 0:01:44.853951

这大约要慢2000倍。

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

亚当

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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‘字符。

票数 31
EN

Stack Overflow用户

发布于 2010-02-06 21:59:13

问题出在Tkinter文本小部件以及它对非常长的行的低效管理上,而您创建了一个。你会注意到,虽然一条很长的线的任何部分都是可见的,但所有的滚动都非常慢。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2212722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档