¿Cómo administrar y comunicarse con múltiples kernels IPython / Jupyter desde un script de Python?

Quiero imitar la funcionalidad de un servidor de notebook, y en su lugar coordinar la creación / administración de diferentes núcleos IPython / Jupyter desde un cuerpo central de lógica (es decir, mi propio script de Python).

Por ejemplo, quiero:

  • Defina un comando abstracto, por ejemplo, “agregar (x, y)”
  • Comunique el comando abstracto a varios kernels, por ejemplo, un kernel IPython y un kernel Scala
  • Haga que cada kernel ejecute el comando como lo deseen.
  • Devuelva el resultado de cada núcleo al cuerpo central de la lógica.

¿Alguien puede indicarme cómo iniciar / detener / comunicarse mediante progtwigción con varios kernels IPython / Jupyter?

Un KernelManager se ocupa de iniciar y detener un solo kernel, y hay un MultiKernelManager para coordinar más de uno.

Luego, puede usar el método .client() para obtener una instancia de KernelClient que maneje las comunicaciones con un kernel:

Para obtener detalles sobre cómo se comunica con un kernel, consulte los documentos de especificaciones del mensaje . KernelClient retira algo de esto, pero probablemente necesite saber algo de él.