我多次注意到,一个简单的 Python 脚本(在循环中进行一些简单的代数计算)在 shell 命令行上启动时比通过 IDLE 的 shell 运行速度快得多(最高可达 6 倍)。脚本中没有什么特别之处。我只打印一个循环变量来直观地跟踪循环中的进度。
当然,仅仅这个打印语句不可能是导致 IDLE 速度损失的原因,或者可以吗?
有人能解释一下这是为什么吗?
答案1
是的,print 语句确实是导致空闲速度变慢的主要原因。IDLE 会捕获 stdout 和 stderr 流,并执行大量 Tk 命令以正确呈现文本。删除 stdout 输出应该会再次加快速度。
查看空闲库.PyShell,空闲库.输出窗口, 和空闲库.EditorWindow兔子洞范围(部分)的模块......
我建议使用日志记录模块来记录进度;然后您可以在 IDLE 中运行时将日志记录级别设置为更高的级别,以避免在该条件下输出,或者在 stdout 以外的其他地方进行记录。
虽然我真的不推荐这样做,下面的方法可能有效最多如果你真的想在 IDLE 下运行时配置不同的行为,那么你可能需要花费很多时间。但你真的不应该这样做 :-)
import sys
running_under_idle = 'idlelib' in sys.modules