Ipython: Importar pyplot faz com que o ícone da doca salte no mac

Criado em 8 jan. 2017  ·  10Comentários  ·  Fonte: ipython/ipython

Isso é ilustrado pelo seguinte GIF:

image

Importar pyplot no python repl normal faz com que o ícone do foguete python apareça, mas não pula distraidamente. Importá-lo dentro do IPython faz com que o ícone salte irritantemente por quase um minuto.

Isso está usando uma construção de framework de Python do Homebrew.

bug

Comentários muito úteis

Levei apenas 10 segundos para perceber que minha máquina não estava congelada, mas que o ponteiro que eu estava olhando era o ponteiro do seu .gif.

Todos 10 comentários

qual backend você está usando? Executar plt.ion() ou %matplotlib ajuda?

Minha sugestão é: quando o IPython se desacopla da linha de leitura, ele também se desacopla da máquina PyOS_InputHook . No caso do Python simples, a GUI está sendo inicializada (iniciando o salto), o código da GUI instala o gancho e, quando termina de iniciar, alguns telefones para casa para permitir que o foguete pare de saltar porque o loop principal da GUI é executado intercolado com o repl. No IPython, esse gancho ainda está instalado, mas não importa porque o IPython está sendo executado por meio do kit de ferramentas prompt. Se você iniciar a integração do loop de eventos IPython, a GUI irá telefonar para casa e parar o salto.

Ou eu poderia estar completamente errado.

Isso está usando o backend MacOSX . Usar plt.ion() ou %matplotlib após a importação pyplot não interrompe o salto e usar %matplotlib antes de fazer a importação pyplot apenas faz com que o ícone comece a saltar.

Isso acontece com o backend tk?

Não, nenhum ícone de foguete com TkAgg .

Vou ficar ligado a # 9312
Vou tentar entender isso. Faça ping em @minrk.

Eu vou dizer que isto :

    if not window_count:
        return

Precisa ser removido, pois a integração do eventloop precisa ser executada mesmo se não houver janelas ... parece estar funcionando para mim.
A alternativa seria certificar-se de que inputhook(context) faz pelo menos um loop, mesmo que não haja janelas .. assim por diante:

    global at_least_once
    if not window_count and not at_least_once:
        at_least_once = True
        return

@ngoldbaum , você se importaria de tentar?
Também suponho que pare de saltar assim que você tiver sua primeira janela.

A gravação da tela também me deixa feliz porque é realista em sua digitação e me faz sentir menos culpado por minha digitação horrível.

Na verdade, removendo aquele

if not window_count:
    return

bloco corrige o problema para mim. E, como você suspeitava, criar um enredo interrompe o salto.

Enviado nº 10150, aguardará revisão de pessoas mais qualificadas.

Levei apenas 10 segundos para perceber que minha máquina não estava congelada, mas que o ponteiro que eu estava olhando era o ponteiro do seu .gif.

Esta página foi útil?
0 / 5 - 0 avaliações