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
Usage:
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:
init_ipython_kernel(user_ns=globals())
or:
init_ipython_kernel(user_ns={"main_globals": globals()})or:
init_ipython_kernel(user_ns={"a": a})
Alternatives / related links:
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.
Metadata
Release files for background-zmq-ipython 1.20230717.114829
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| background_zmq_ipython-1.20230717.114829.tar.gz | 9.1 kB | Details |
Release files / background_zmq_ipython-1.20230717.114829.tar.gz
| Download URL | background_zmq_ipython-1.20230717.114829.tar.gz |
|---|---|
| Size | 9.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ea038277c6b3c46e2b96342513ee500321133223f54421533df54493de877825
|
|
BLAKE2b-256 checksum How to use checksums |
100c732aba959755c68ffa5ed64f58fb322d33d2e72f045749273ca79233ee28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.7
|