Ipython: La importación de pyplot provoca el rebote del icono de la base en mac

Creado en 8 ene. 2017  ·  10Comentarios  ·  Fuente: ipython/ipython

Esto se ilustra con el siguiente gif:

image

La importación de pyplot en la réplica de python normal hace que aparezca el icono del cohete de python, pero no rebote de manera distractora. Importarlo dentro de IPython hace que el ícono rebote de manera molesta durante casi un minuto.

Esto está utilizando una compilación de marco de Python de Homebrew.

bug

Comentario más útil

Solo me tomó 10 segundos darme cuenta de que mi máquina no estaba congelada, pero que el puntero que estaba mirando era el puntero en tu .gif.

Todos 10 comentarios

¿Qué backend estás usando? ¿Es útil ejecutar plt.ion() o %matplotlib ?

Mi instinto / hacer esto sobre la marcha, supongo que es: cuando IPython se desacopla de readline, también se desacopla de la maquinaria PyOS_InputHook . En el caso de Python simple, la GUI se está iniciando (iniciando el rebote), el código de la GUI instala el gancho, y cuando termina de iniciarse de alguna manera, los teléfonos se comunican a casa para que el cohete sepa que debe dejar de rebotar porque el bucle principal de la interfaz gráfica de usuario se ejecuta intercolado con la réplica En IPython, ese gancho todavía está instalado, pero no importa porque IPython se ejecuta a través del kit de herramientas de solicitud. Si inicia la integración del bucle de eventos de IPython, la GUI llamará a casa y detendrá el rebote.

O podría estar completamente fuera de lugar.

Esto está usando el backend MacOSX . El uso de plt.ion() o %matplotlib después de la importación pyplot no detiene el rebote y el uso de %matplotlib antes de realizar la importación de pyplot solo hace que el icono comience a rebotar.

¿Ocurre con el backend de tk?

No, ningún icono de cohete con TkAgg .

Me voy a quedar que está vinculado al # 9312
Voy a intentar entenderlo. Haga ping a @minrk.

Voy a decir que esto :

    if not window_count:
        return

Es necesario eliminarlo, ya que la integración de eventloop debe ejecutarse incluso si no hay ventanas ... parece que me está funcionando.
La alternativa sería asegurarse de que inputhook(context) haga al menos un bucle incluso si no hay ventanas ... así que a lo largo:

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

@ngoldbaum, ¿te importaría intentarlo?
También supongo que dejará de rebotar tan pronto como tengas tu primera ventana.

La grabación de pantalla también me hace feliz porque es realista en su escritura y me hace sentir menos culpable por mi horrible escritura.

De hecho, quitando eso

if not window_count:
    return

block soluciona el problema por mí. Y como sospechaba, la creación de una trama detiene los rebotes.

Enviado # 10150, esperará la revisión de personas más calificadas.

Solo me tomó 10 segundos darme cuenta de que mi máquina no estaba congelada, pero que el puntero que estaba mirando era el puntero en tu .gif.

¿Fue útil esta página
0 / 5 - 0 calificaciones