Jupyter Notebook 之如何在不重启内核的情况下重新加载模块

Restart again and again – – SO ANNOYING!

在使用 jupyter notebook 编程中常常会遇到这样的问题,我们在一个笔记本比如 example.ipynbimport 了一个外部的自定义模块 mymodule.py,运行后发现 mymodule.py 里有函数写错了,在修改完 mymodule.py 中的错误后回到 example.ipynb 继续运行,发现修改并没有同步到 example.ipynb 中,还是会报相同的错。
最简单粗暴地解决这个问题的方法是 重启内核,让 example.ipynb 重新 import 一下 mymodule.py ,会发现导入的就是修改后的模块了。
但如果我们要频繁修改 mymodule.py 文件,难道要不停地重启再重启吗?那也太烦人了!

Alternative method 1: importlib.reload

第一个方法是使用 importlib 中的 reload 函数,显式地指明 notebook 在导入时注意 reload 一下,即可同步修改。举例如下:

import mymodule
import importlib
importlib.reload(mymodule)

这样在每次修改完后运行 import cell,都会同步修改内容。
然而,如果我们想要同步很多 module呢?一个一个地指明 reload 也有点繁琐,那就可以用第二种方法。

Alternative method 2: autoreload

用法如下:
首先启用 autoreload 拓展:

%load_ext autoreload

接着设置 autoreload 模式为自动重新加载所有模块:

%autoreload 2

如果要自动重新加载 mymodule,可以写作:

%load_ext autoreload
%autoreload 2
import mymodule

Summary

除了重启内核来更新模块修改之外,还可以使用 importlib.reloadaotureload 的方法进行更新,还有什么其他方法的话感谢在评论区指出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值