Как остановить выполнение программы Python в IDLE - PullRequest
9 голосов
/ 17 марта 2010

У меня есть скрипт Python, который использует plt.show() в качестве последней инструкции. Когда он запускается, IDLE просто зависает после последней инструкции. Я получаю изображение, но не получаю подсказку обратно.

В других сценариях я обычно использую ctrl-c, чтобы прервать работу программы (иногда это не срабатывает сразу), но как мне получить приглашение с plt.show()? Ctrl-c не работает ...

Есть ли другие способы остановить программу?

Это бездействие в Windows, если оно имеет какое-либо значение.

Ответы [ 4 ]

7 голосов
/ 16 декабря 2013

Ctrl + F6 (Перезапустить оболочку)

или Shell-> Перезагрузка оболочки

4 голосов
/ 17 марта 2010

Я видел эту проблему с IDLE и matplotlib при использовании их в Windows. Я не знаю точную причину, но Ctrl-C пару раз, как правило, работал для меня. Если это не работает для вас, вы можете использовать обычный интерпретатор вместо того, чтобы записывать свой график непосредственно в файл вместо экрана.

Это один из тех (многочисленных) случаев, когда IDLE не ведет себя как обычный сценарий Python или сеанс интерпретатора. Из-за этого я обычно избегаю бездействия.

2 голосов
/ 23 ноября 2011

Когда вы используете plt.show(), подпроцесс python входит в цикл событий GUI-инструментария и блокируется до его завершения. Когда он выходит, вы получаете подсказку обратно.

Если вы используете бэкэнд TkAgg, вам нужно будет навести курсор мыши на фигуру после нажатия Ctrl + C. Это приведет к остановке цикла событий. (У Ткинтера есть свои причуды)

В качестве альтернативы, IdleX предлагает поддержку Matplotlib с IDLE с использованием расширения EventLoop.py. Вы можете отображать и взаимодействовать с фигурами без использования plt.show(). Обязательно установите plt.interactive(True) перед генерацией цифр.

1 голос
/ 01 июля 2015

У меня была такая же проблема в редакторе Canopy Python, и я смог прервать сеанс Python с помощью CTRL+. (кнопка «точка»). Надеюсь, что это помогает, или они, вероятно, делают вещи аналогичным образом

...