Isso é ilustrado pelo seguinte GIF:
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.
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.
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.