jupyter 中重新 import 模块
#blog
[[jupyter]]是数据科学中非常常用的工具,balabalabala…
自己查去,懒得再写一遍。
jupyter 中如果调用了外部的一些 py 写的模块,而好死不死,这些外部模块又需要经常改写一些参数,调整一些逻辑。比较一般的做法是直接重启 kernel,重新跑一遍这个 notebook。
BUT
想象一下,你在一个内存只有 24GB 的主机上,加载了一个 18GB 的数据,跑了一个耗时 127Min 的分析,而修改的是一个下一步操作。这会儿,要么提桶跑路,要么就把中间结果存起来,改了代码再重新跑。
当然,你也可以让新来公司的小盆有去干这个事儿,那么后面的内容可以省略不看了。
不管哪个,都不符合我们高级数据科学家的身份…
SO…
我们现在需要一个可以不用重启 kernel 就能重新加载修改后的模块的方法。
方法 1
jupyter/Ipython 自带黑魔法,在整个文件的最开始加上下面两句:
%load_ext autoreload
%autoreload 2
然后你的 jupyter 小盆有,就会自动重新加载所有修改过的外部 modules。
博主亲测,好使,推荐。
方法 2
import some_module
import importlib
importlib.reload(some_module)
注意上面这几句,其实是 python 3.4 之后才有的方式,3.4 之前用的是其他方式。but,这年头谁还用 3.4 之前的版本。你要是还在用,我不管,我不管,你自己升级一下。
博主亲测,不好使。俺也不知道为啥。但是聪明又伶俐的你不妨试试。
方法 3
python 在 import 一个模块之后,会把这个模块的相关信息加入到 sys.modules 里面去。下一次再 import 的时候,如果发现 sys.modules 里面已经有同名模块了,就直接跳过去了。这就是为啥第二次 import 某个模块不起作用。
起初这样设计是为了提高运行效率,不然每次 import 都重新 import 一下要被 import 的模块,累也累死了。
知道了 python 小盆有偷懒的方式,我们就可以调教一下这个可奈的小盆有了。直接去 sys.modules 里面给这个模块删光光,然后再重新 import 就好了。
import sys
keys=[]
for k in sys.modules.keys():if "YOUR_MODULE_NAME" in k:print(k)keys.append(k)
for k in keys:del sys.modules[k]
import YOUR_MODULE_NAME
博主亲自写的,好使。but,没事别这么折腾着玩,怪累的。有这个时间去跟小姐姐腻歪不好么。
一个正经的IT工作者
非著名人工智能表演艺术家
非著名业余摄影爱好者
孙大头
dwSun
参考:
- python sys.modules_NoOne-csdn的博客-CSDN博客_python sys.modules
- jupyter如何重新加载模块_ybdesire的博客-CSDN博客_jupyter重新运行代码
- Live-reloading of Python Modules in the Python REPL / IPython / Jupyter Console
jupyter 中重新 import 模块相关推荐
- Python中import模块的两种模式
import <模块名> import pandasimport pandas as pd 使用函数方式:<模块名>.<函数名>(<函数参数>),或者& ...
- python中模块文件的扩展名不一定是py_跟老齐学Python之Import 模块
认识模块 对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块).为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义: ...
- python中import random_[零基础学python]Import 模块
认识模块 对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块).为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义: ...
- python中的utils模块_python学习笔记-import utils报错
今天遇到一个坑爹的问题,查找了半天原因,终于解决了,在此特地记录一下. 运行环境:Windows eclipse 我在eclipse中配置了python的运行环境,在eclipse中编写python代 ...
- Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)
全文目录 ==先导知识== 1 认识Python 1.1.1 Python的发展历程 1.1.2 Python语言的特点 2. Python解释器的安装与Python程序运行 1.2.1 安装Pyth ...
- python中引入自定义模块
1.首先新建一个文件命名为t1,后缀名为py: 所以打开所在文件夹,把后缀直接改成py 2.在jupyter里打开这个文件,输入如下命令自定义函数 3.在jupyter中新建一个文件,用import导 ...
- python中的numpy模块
参考 python中的numpy模块 - 云+社区 - 腾讯云 目录 NumPy 教程 学习本教程前你需要了解 NumPy 应用 相关链接 NumPy 安装 1.使用已有的发行版本 2.使用 pip ...
- 【Python】「argparse基本用法」及「jupyter中使用 args = parser.parse_args()并传参」
主要是对该项目dgl/examples/pytorch/metapath2vec at master · dmlc/dgl · GitHub中代码的理解. 对于metapath2vec.py文件内容: ...
- 在idea中移除子模块Moudle后重新导入
在idea中移除模块并不是真正的移除,重新添加 1.按快捷键:crtl+shift+alt+s 打开 Project Structure 2.点击左侧Moudles 3.点击+号然后点击 import ...
最新文章
- 实战:手把手教你实现用语音智能控制电脑 | 附完整代码
- jQuery 之 [ 动画 ]
- int 9中断例程-;在屏幕中间依次显示'a'~'z',并可以让人看清。 在显示的过程中,按下Esc键后,改变显示的颜色...
- delphi 打印指定地点文件_2020年度电脑、打印机耗材及相关配件采购招标公告
- 基于遗传算法实现自动组卷
- 安装electron报错
- 安卓突然自动关机 android正在启动,华为手机开机重启后老是显示安卓正在启动优化应用是为什么?...
- c++从txt中读取数据,数据并不是一行路径(实用)
- 3d打印 开源_公开地图以实现可持续性,在农场进行3D打印以及更多开源新闻
- burst什么意思_为什么Windows/iOS操作很流畅而Linux/Android却很卡顿呢?
- C# 开发和使用中的32个技巧
- 实参和形参的一些问题
- 百度网盘加速下载Motrix多线程下载器
- 各家船公司之GX介绍
- ASSIMP的数据结构
- 数据可视化大屏的4大优势盘点,超实用!
- UIUC 云计算概念:SWIM协议笔记
- 面试官:说说你对 options 请求的理解
- UI设计师、平面设计师常用的网站大全,初学者必备,大家都在用!
- 云计算、大数据、人工智能时代,为什么不能错过Linux?