当前位置: 首页 > 面试题库 >

Python:为什么IDLE这么慢?

琴宾鸿
2023-03-14
问题内容

IDLE是我最喜欢的Python编辑器。它提供了非常漂亮和直观的Python
shell,它对单元测试和调试非常有用,并且还提供了一个简洁的调试器。

但是,在IDLE下执行的代码异常缓慢。 疯狂是指慢 三个数量级

重击

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倍。

有什么想法或想法可以改善这一点吗?我想这与后台调试器有关,但是我不确定。

亚当


问题答案:

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

我只是在我的Q6600(超频3GHz)系统上尝试过,而我的数字甚至更糟。但是很容易看到,随着输出文本的增加,它们正在下降。

我试图用

1000次迭代=> 7.8秒2000次迭代=> 28.5秒3000次迭代=> 70秒

过去,我做了一些底层TK的工作,我知道TkText窗口小部件将文本保留在BTree结构中。一次在一个字符后附加文本是最差的方法之一,但这似乎是IDLE所做的。通常的方法是捕获更多数据并附加更大的文本块。

令人惊讶的是,如果您将打印内容写为“ x \ n”,则输出速度会更快。7秒内进行3000次迭代,而19秒内进行10000次迭代。

因此,问题肯定是将单个字符附加到现有行上。空闲的程序员不知道TkText是如何工作的。

因此建议您在文本中添加更多换行符,或者输出更大的块,而不仅是单个“ x”字符。



 类似资料:
  • 问题内容: 因此,我在闲逛时使用了递归,我发现使用递归的循环比常规的while循环要慢得多,我想知道是否有人知道为什么。我已经包括了我下面所做的测试: 但是,在上一次测试中,我注意到如果删除该语句,则表明速度略有提高,因此我想知道if语句是否是造成循环速度差异的原因? 问题答案: 您已将函数编写为尾递归。在许多命令式和函数式语言中,这将触发尾部递归消除,在这种情况下,编译器用简单的JUMP替换了C

  • 问题内容: 这是所有编程语言所共有的吗?在进行多次打印后再执行println似乎更快,但是将所有内容移动到字符串中并仅进行打印似乎最快。为什么? 编辑:例如,Java可以在不到一秒钟的时间内找到所有高达100万的质数- 但要进行打印,然后在自己的println中将它们全部输出可能需要几分钟!最多可打印100亿小时! 例如: 问题答案: 速度并不慢,而是由主机操作系统提供的与控制台连接的基础。 您可

  • 问题内容: 我对此感到困惑 现在让我们来看看numpy: 神圣的CPU周期蝙蝠侠! 使用改进,但恕我直言仍然不够 numpy.version.version =‘1.5.1’ 如果您想知道在第一个示例中是否跳过了列表创建以进行优化,则不是: 问题答案: Numpy已针对大量数据进行了优化。给它一个很小的3长度数组,毫不奇怪,它的性能很差。 考虑单独的测试 输出是 似乎是数组的归零一直花费在nump

  • 问题内容: Magento通常这么慢吗? 这是我的第一次使用体验,管理面板只需花一些时间即可加载和保存更改。这是带有测试数据的默认安装。 托管该服务器的服务器可超快地服务于其他非Magento站点。Magento使它如此缓慢的PHP代码有什么用,该如何解决? 问题答案: 我只是切身参与优化Magento的性能,但这是系统速度如此缓慢的一些原因 Magento的某些部分使用在MySQL之上实现的EA

  • 问题内容: 在有人质疑使用的事实之前,我先说一下,出于内存和性能的原因,我需要在特定的应用程序中使用它。[1] 因此,到目前为止,我一直使用并假定这是最有效的方法。但是,自古以来我就注意到它是软件的瓶颈。[2] 然后,就在最近,我试图用一个巨大的映射替换,在该映射中放置/获取字符串,以便每次获得唯一的实例。我以为这会慢一些…但是事实恰恰相反!它快得多了!通过推送/轮询地图(实现完全相同)来替换,可

  • ChatGPT为什么这么火?