如何在 Jupyter 笔记本中运行单元格时编辑变量?



对这个绝对的菜鸟问题表示歉意,以前在使用Jupyter Notebook时,我已经能够通过在另一个单元格中定义变量并运行该单元格来更改当前正在运行的单元格中的变量值。由于某种原因,这不再有效。我想重新获得这个函数,以便我可以在数值积分循环仍在运行时更改物理参数。

第一个带循环的单元格

import time
t = 0
while t<20:
t = t + 1
time.sleep(1)
print(t)

第二个单元格

t = 1

如果第一个单元格正在运行,而我尝试运行第二个单元格,Jupyter 会等待第一个单元完成,然后再执行第二个单元。我想在循环仍在运行时手动更改变量。

我认为代码执行在IPython内核中一直是顺序的。通常只有一个线程来接收和执行请求并处理它们。例如,请参阅2016年的讨论: https://github.com/jupyter/notebook/issues/1155

如果您确定这在过去一直有效,请尝试将notebookipykernel包降级到您当时使用的版本。

有一些增强功能可以更改默认行为。例如,这里描述的单元格魔术%%async_run: https://github.com/leriomaggio/async-ipython-magic

您可以在笔记本中对最新版本的 IPython 和 IPyKernel 使用 async/await,但这需要更改您的代码: https://blog.jupyter.org/ipython-7-0-async-repl-a35ce050f7f7?gi=de4b6eb312a https://ipython.readthedocs.io/en/stable/interactive/autoawait.html

还有IPyParallel,但这似乎比普通笔记本需要更多的设置: https://ipyparallel.readthedocs.io/en/latest/intro.html

最新更新