Python IDLE在非常大的程序输入上变得很慢

时间:2013-08-16 10:27:20

标签: python python-2.7 python-idle

当python命令行没有处理非常大的输入时,为什么python idle会变得这么慢?

例如,如果我在python IDLE中运行“aman”* 10000000,它会变得无响应,但在python cmd行上,它很快。

1 个答案:

答案 0 :(得分:2)

我不得不研究一下。当我在我的机器上调用idle时,我看到了另一个使用idlelib

的python进程
~$ ps -eaf | grep -in idle
234:1000     13122     1  5 16:44 ?        00:00:01 /usr/bin/python2.7 /usr/bin/idle-python2.7
235:1000     13124 13122  3 16:44 ?        00:00:01 /usr/bin/python2.7 -c __import__('idlelib.run').run.main(True) 60839
239:1000     13146 12061  0 16:44 pts/0    00:00:00 grep --color=auto -in idle
~$ 

最后一个参数(60839)让我思考。所以我四处寻找idlelib并在此处获得了实施https://github.com/pypy/pypy/blob/master/lib-python/2.7/idlelib/run.py#L49那里的评论说

Start the Python execution server in a subprocess

    In the Python subprocess, RPCServer is instantiated with handlerclass
    MyHandler, which inherits register/unregister methods from RPCHandler via
    the mix-in class SocketIO.

现在,事情很清楚。 IDLE通过TCP连接向python解释器发送命令。不过,我不相信。然后,我会阅读完整的Help - > About IDLE - > README。它说

  

IDLE在一个单独的进程中执行Python代码,该进程重新启动   对于从编辑器窗口启动的每个运行(F5)。环境   也可以从Shell窗口重新启动,而无需重新启动IDLE。

<强>结论

当我们有这样的依赖(IDLE取决于套接字上的响应)时,你所经历的延迟就完全没问了。