G
Gelonida N
Hi,
I'd like to embed an ipython kernel in an appliction, such, that I can use
ipython console --existing kernel-<pid>.json lateron to connect to it
and to look at some values
Due to various reason I don not want to start it in the main thread.
If you look at following example you will see, that I can start an
ipython kernel and
connect to it as long as I start it in the main thread.
as soon as I start the kernel in another thread my ipython client prints
the first few lines and a welcome text, but
no prompt is shown.
Does anybody know a way o how to start IPython outside of the main thread?
Below code trying to show a working setup with ipython kernel in the
main thread and failing if ipython kernel is started from another thread
#!/usr/bin/env python
import os, time, threading
from IPython import embed_kernel
cnt = { 'value' : 0 }
def run_ip_kernel():
embed_kernel(local_ns={ 'cnt': cnt})
def example_thread():
while True:
cnt['value'] += 1
print(cnt['value'])
time.sleep(5)
main_thread = run_ip_kernel
other_thread = example_thread
# if I uncomment the next two lines, then I can no more
# execute my interactive IPython shell
#main_thread = example_thread
#other_thread = run_ip_kernel
print("now you can try to connect to this shell with:")
print("ipython console --existing kernel-%d.json" % os.getpid())
threading.Thread(target=other_thread).start()
main_thread()
I'd like to embed an ipython kernel in an appliction, such, that I can use
ipython console --existing kernel-<pid>.json lateron to connect to it
and to look at some values
Due to various reason I don not want to start it in the main thread.
If you look at following example you will see, that I can start an
ipython kernel and
connect to it as long as I start it in the main thread.
as soon as I start the kernel in another thread my ipython client prints
the first few lines and a welcome text, but
no prompt is shown.
Does anybody know a way o how to start IPython outside of the main thread?
Below code trying to show a working setup with ipython kernel in the
main thread and failing if ipython kernel is started from another thread
#!/usr/bin/env python
import os, time, threading
from IPython import embed_kernel
cnt = { 'value' : 0 }
def run_ip_kernel():
embed_kernel(local_ns={ 'cnt': cnt})
def example_thread():
while True:
cnt['value'] += 1
print(cnt['value'])
time.sleep(5)
main_thread = run_ip_kernel
other_thread = example_thread
# if I uncomment the next two lines, then I can no more
# execute my interactive IPython shell
#main_thread = example_thread
#other_thread = run_ip_kernel
print("now you can try to connect to this shell with:")
print("ipython console --existing kernel-%d.json" % os.getpid())
threading.Thread(target=other_thread).start()
main_thread()