python启动jupyter,在Jupyter上启动python脚本作为后台作业
I am trying to run a *.py file as a background service in Jupiter notebook.
from IPython.lib import backgroundjobs as bg
jobs = bg.BackgroundJobManager()
jobs.new(%run -i "script.py") # Not working
jobs.new("script.py") # Not working
解決方案
Ipython/Jupyter background jobs is designed to run either plain code to eval (string), or function. Files and ipython magic commands is not supported.
One thing you can do is to simply read file content and pass it to eval:
from IPython.lib.backgroundjobs import BackgroundJobFunc
with open('script.py') as code:
job = BackgroundJobFunc(exec, code.read())
result = job.run()
BackgroundJobManager is pretty much the same, but a little bit "smarter".
Side note: all background machinery behind this interfaces runs in threads of the same process and share interpreter state and output. So, just keep in mind:
this is not suited for computational-heavy scripts
never run untrusted code this way — this applies to eval overall, but in this case you can into situation when you'll never get GIL back to your "frontend" thread
avoid scripts that use stdout, most probably those will clutch with your main thread
總結
以上是生活随笔為你收集整理的python启动jupyter,在Jupyter上启动python脚本作为后台作业的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美股周三:三大股指全线大涨,英特尔涨超
- 下一篇: 谷歌圆形无线充电器专利获批:可动态调整磁