2010-03-17 199 views
9

我有一个使用plt.show()作为最后指令的python脚本。运行时,IDLE会在最后一条指令后挂起。我得到的图像,但我没有得到及时的回应。如何在IDLE中停止Python程序执行

在其他脚本中,我通常使用ctrl-c来破坏程序(有时不能立即运行),但是如何获得plt.show()的提示? Ctrl-c不起作用...

是否有其他方法可以停止该程序?

这是Windows上的IDLE,如果它有任何区别。

+2

一些选项在这里:http://stackoverflow.com/questions/1219394/ – bernie 2010-03-17 07:12:26

+0

'Ctrl + Pause | Break'? – 2010-03-17 08:05:09

回答

4

我在Windows上使用它们时发现了IDLE和matplotlib的问题。我不知道确切的原因,但几次Ctrl-c通常适用于我。如果这不适合你,你可以使用普通的解释器,而不是将你的图直接写入文件而不是屏幕。

这是IDLE不像普通Python脚本或解释器会话那样(充裕)时间之一。正因为如此,我通常避免空闲。

+0

你用什么来代替? – greye 2010-03-17 07:16:31

+0

不幸的是,Windows上的选项并不好。我直接使用交互式解释器(尽管cmd.exe并不完美),并从gvim调用Python来运行脚本。任何数量的编辑器和IDE都可以直接调用Python,其中很多编辑器和列表都在http://wiki.python.org/moin/IntegratedDevelopmentEnvironments上列出。 iPython可能会遇到一些与IDLE相同的问题,但我怀疑它会让matplotlib工作(我从来没有使用它,所以我不能保证这么做)。 – 2010-03-17 07:39:42

2

当您使用plt.show()时,python子进程会进入GUI工具箱的事件循环并阻塞,直到事件循环退出。当它退出时,你会收到提示。

如果您使用的是TkAgg后端,您需要在按下Ctrl + C后将鼠标移动到数字上。这将导致事件循环停止。 (Tkinter有它的怪癖)

或者,IdleX使用EventLoop.py扩展提供了带有IDLE的Matplotlib支持。您可以在不使用plt.show()的情况下显示数字并与其交互。在生成数字之前,请务必设置plt.interactive(True)

5

按Ctrl + F6 (重启壳)

或壳 - >重新启动壳牌

1

我在树冠Python编辑过同样的问题,我是能够与CTRL+.( “点” 按钮中断的Python会话)。希望有所帮助,或者他们可能以类似的方式做事