我试图在Jupiter笔记本中运行*.py
文件作为后台服务。
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后台作业旨在运行简单代码到eval
(字符串)或函数。不支持Files和ipython magic命令。
您可以做的一件事是简单地读取文件内容并将其传递给eval
:
from IPython.lib.backgroundjobs import BackgroundJobFunc
with open('script.py') as code:
job = BackgroundJobFunc(exec, code.read())
result = job.run()
BackgroundJobManager
几乎是一样的,但有点“聪明”。
旁注:此接口后面的所有后台机制都在同一进程的线程中运行,并共享解释器状态和输出。所以,请记住:
eval
整体,但在这种情况下你可以进入你永远不会让GIL回到你的“前端”线程的情况