2010-03-17 234 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會話)。希望有所幫助,或者他們可能以類似的方式做事