ipython / ipython/ipykernel

object_inspect may call user-defined functions that wedge the kernel

Abierto
#383 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
734
Forks
412
Merge medio
1 d 5 h
PR fusionados (30 d)
8

Descripción

Actions that induce object inspection, e.g., shift-tab after a variable, may call user-defined functions that take a long time to complete. When that happens, the kernel is wedged. Subsequent code execution blocks waiting for the inspect reply, kernel interrupt doesn't unblock, meaning that a kernel process restart is required to proceed.

An example follows:
![slow_inspect](https://user-images.githubusercontent.com/151865/51767459-53843c80-2092-11e9-8042-24b5373e0cca.gif)

This example shows the back-to-back completion time for an object inspect triggered by shift-tab. I recorded the demo from a Jupyterlab frontend started on `try.jupyter.org`. The issue applies to vanilla Jupyter as well.

In this example, `Slow` is an object with a `__repr__` that takes 1 second. `__repr__` seems to be called multiple times during inspection, meaning that the end-to-end time to inspect an object with a 1 second `__repr__` is ~10 seconds.

Of course, increasing the `sleep` increases the delay.

I suspect there's a fundamental tradeoff between the information available in object inspection and reliability. To avoid becoming wedged, object inspection and code completion should avoid calling any user-defined functions. But, that will limit available information.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.