Ipython: Импорт pyplot вызывает подпрыгивание значка док-станции на Mac

Созданный на 8 янв. 2017  ·  10Комментарии  ·  Источник: ipython/ipython

Это иллюстрируется следующей гифкой:

image

Импорт pyplot в обычном python repl вызывает появление значка ракеты python, но не отвлекает. При его импорте в IPython значок раздражающе подпрыгивает почти минуту.

Это использует сборку фреймворка Python от Homebrew.

Самый полезный комментарий

Мне потребовалось всего 10 секунд, чтобы понять, что моя машина не зависла, а указатель, на который я смотрел, был указателем в вашем .gif.

Все 10 Комментарий

какой бэкэнд вы используете? Помогает ли запуск 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.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги