Это иллюстрируется следующей гифкой:
Импорт pyplot в обычном python repl вызывает появление значка ракеты python, но не отвлекает. При его импорте в IPython значок раздражающе подпрыгивает почти минуту.
Это использует сборку фреймворка Python от Homebrew.
какой бэкэнд вы используете? Помогает ли запуск plt.ion()
или %matplotlib
?
Мой коленный рефлекс / выдумка, как я предполагаю, заключается в следующем: когда IPython отсоединяется от строки чтения, он также отсоединяется от механизма PyOS_InputHook
. В случае простого python графический интерфейс запускается (запускает подпрыгивание), код графического интерфейса устанавливает ловушку, и когда он завершает запуск, некоторые телефоны возвращаются домой, чтобы ракета знала, что она перестает подпрыгивать, потому что основной цикл графического интерфейса работает с ответ В IPython этот хук по-прежнему установлен, но это не имеет значения, потому что IPython работает с помощью инструментария подсказок. Если вы запустите интеграцию цикла событий IPython, графический интерфейс позвонит домой и остановит подпрыгивание.
Или я мог быть совершенно не в своей тарелке.
Это использует бэкэнд MacOSX
. Использование plt.ion()
или %matplotlib
после импорта pyplot
не останавливает подпрыгивание, а использование %matplotlib
перед импортом pyplot просто приводит к тому, что значок начинает подпрыгивать.
Такое бывает с tk backend?
Нет, вообще никакого значка ракеты с TkAgg
.
Я останусь, это связано с номером 9312
Я попытаюсь понять это. Пинг @minrk.
Я скажу, что это :
if not window_count:
return
Необходимо удалить, так как интеграция eventloop должна выполняться, даже если нет окон ... похоже, это работает для меня.
Альтернативой было бы убедиться, что inputhook(context)
выполняет хотя бы один цикл, даже если нет окон ... так далее:
global at_least_once
if not window_count and not at_least_once:
at_least_once = True
return
@ngoldbaum, не
Также я полагаю, он перестанет подпрыгивать, как только у вас появится первое окно?
Запись с экрана также делает меня счастливым, потому что она реалистична при наборе текста и заставляет меня чувствовать себя менее виноватым из-за моей ужасной печати.
Действительно, удалив это
if not window_count:
return
блок решает проблему для меня. И, как вы и подозревали, создание сюжета останавливает подпрыгивание.
Подали # 10150, будем ждать просмотра более квалифицированных людей.
Мне потребовалось всего 10 секунд, чтобы понять, что моя машина не зависла, а указатель, на который я смотрел, был указателем в вашем .gif.
Самый полезный комментарий
Мне потребовалось всего 10 секунд, чтобы понять, что моя машина не зависла, а указатель, на который я смотрел, был указателем в вашем .gif.