Background ZMQ IPython/Jupyter kernel
Run some IPython ZMQ kernel in the background, without an interactive shell. You can connect to that kernel remotely via ZMQ.
Installation (package is on PyPI):
pip install background_zmq_ipython
import background_zmq_ipython background_zmq_ipython.init_ipython_kernel()
The kernel will then run in the background in its own thread. The init will print some message similar to this on stdout:
To connect another client to this IPython kernel, use: jupyter console --existing kernel-1111.json
Now, after you connected, how to access globals from the main module? E.g. let’s say there is a variable a.
sys.modules["__main__"].a should work. Via sys.modules, you can access all the imported modules. Or just do import mod again.
Get the stack of all/other frames via sys._current_frames(), and there you can access the globals from other threads as well.
You can provide user_ns to init_ipython_kernel, e.g:
Alternatives / related links:
- Twisted SSH (example code)
- IPython.embed_kernel in a background thread (example code). This has some issues (e.g. here; messing around with sys.stdout etc).
- This code was introduced in this StackOverflow question, and also discussed in this IPython GitHub issue #8097, but it has become outdated, so this project provides a rewrite / updated code, and the goal was also an easy to install pip package.
Release history Release notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size background_zmq_ipython-1.20190928.182508.tar.gz (7.4 kB)||File type Source||Python version None||Upload date||Hashes View hashes|
Hashes for background_zmq_ipython-1.20190928.182508.tar.gz