Фоновые задания Ipython / Jupyter предназначены для запуска либо простого кода для eval
(строка), либо функции. Файлы и магические команды ipython не поддерживаются.
Вы можете просто прочитать содержимое файла и передать его в eval
:
from IPython.lib.backgroundjobs import BackgroundJobFunc
with open('script.py') as code:
job = BackgroundJobFunc(exec, code.read())
result = job.run()
BackgroundJobManager
почти такой же, но немного «умнее».
Боковое примечание: все фоновые механизмы, стоящие за этими интерфейсами, работают в потоках одного и того же процесса и совместно используют состояние интерпретатора и выходные данные. Так что имейте в виду:
eval
в целом, но в этом случае вы можете попасть в ситуацию, когда вы никогда не вернете GIL в свой «внешний» поток.