使用python进行数据分析,我一般喜欢在jupyter notebook里分析数据,如果分析任务重、需要对多组数据进行分析,我就会把函数抽取出来,放进自定义模块里,便于维护和复用。但是jupyter notebook有一个问题,import自定义模块之后,不会自动更新自定义模块。
之前,函数没写好需要更改,我都是手动重启Jupyter内核,非常麻烦,还得重跑前面代码,如果前面代码运行时间久,就非常浪费时间,一度想要放弃jupyter notebook分析数据。
现在发现jupyter其实有自动更新模块的魔法命令%autoreload
语法概览:
1 | # 设置自动重载 |
autoreload
的意思是自动重新装入,它后面可带参数。
-
无参:装入所有模块
-
0:不执行装入命令。
-
1:只装入所有%aimport 要装的模块。
选择性重新加载:只重新加载那些使用
%aimport
明确指定的模块。用法:
1
2
3%load_ext autoreload
%autoreload 1
%aimport your_module -
2:装入所有%aimport不包含的模块。
全面重新加载:自动重新加载所有已导入的模块(除了一些系统模块)。
用法:
1
2%load_ext autoreload
%autoreload 2
注意
- 如果导入一个模块之后,已经运行,后面进行修改之后,才添加
autoreload
语句,是没法自动重载的,只能重启内核,所以建议直接在jupyter的开头就添加autoreload命令
示例
创建一个示例自定义模块 mymodule.py
,内容为
1 | def greet(name): |
用jupyter调用
对mymodule.py
进行更改,重新运行jupyter
发现输出没有改变
添加自动重载模块的魔法命令,并重启jupyter内核,发现输出改变
现在不需要重启内核,就可以自动重载