#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 模块相关推荐

  1. Python中import模块的两种模式

    import <模块名> import pandasimport pandas as pd 使用函数方式:<模块名>.<函数名>(<函数参数>),或者& ...

  2. python中模块文件的扩展名不一定是py_跟老齐学Python之Import 模块

    认识模块 对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块).为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义: ...

  3. python中import random_[零基础学python]Import 模块

    认识模块 对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块).为了能够对模块有一个清晰的了解,首先要看看什么模块,这里选取官方文档中对它的定义: ...

  4. python中的utils模块_python学习笔记-import utils报错

    今天遇到一个坑爹的问题,查找了半天原因,终于解决了,在此特地记录一下. 运行环境:Windows eclipse 我在eclipse中配置了python的运行环境,在eclipse中编写python代 ...

  5. Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)

    全文目录 ==先导知识== 1 认识Python 1.1.1 Python的发展历程 1.1.2 Python语言的特点 2. Python解释器的安装与Python程序运行 1.2.1 安装Pyth ...

  6. python中引入自定义模块

    1.首先新建一个文件命名为t1,后缀名为py: 所以打开所在文件夹,把后缀直接改成py 2.在jupyter里打开这个文件,输入如下命令自定义函数 3.在jupyter中新建一个文件,用import导 ...

  7. python中的numpy模块

    参考  python中的numpy模块 - 云+社区 - 腾讯云 目录 NumPy 教程 学习本教程前你需要了解 NumPy 应用 相关链接 NumPy 安装 1.使用已有的发行版本 2.使用 pip ...

  8. 【Python】「argparse基本用法」及「jupyter中使用 args = parser.parse_args()并传参」

    主要是对该项目dgl/examples/pytorch/metapath2vec at master · dmlc/dgl · GitHub中代码的理解. 对于metapath2vec.py文件内容: ...

  9. 在idea中移除子模块Moudle后重新导入

    在idea中移除模块并不是真正的移除,重新添加 1.按快捷键:crtl+shift+alt+s 打开 Project Structure 2.点击左侧Moudles 3.点击+号然后点击 import ...

最新文章

  1. 实战:手把手教你实现用语音智能控制电脑 | 附完整代码
  2. jQuery 之 [ 动画 ]
  3. int 9中断例程-;在屏幕中间依次显示'a'~'z',并可以让人看清。 在显示的过程中,按下Esc键后,改变显示的颜色...
  4. delphi 打印指定地点文件_2020年度电脑、打印机耗材及相关配件采购招标公告
  5. 基于遗传算法实现自动组卷
  6. 安装electron报错
  7. 安卓突然自动关机 android正在启动,华为手机开机重启后老是显示安卓正在启动优化应用是为什么?...
  8. c++从txt中读取数据,数据并不是一行路径(实用)
  9. 3d打印 开源_公开地图以实现可持续性,在农场进行3D打印以及更多开源新闻
  10. burst什么意思_为什么Windows/iOS操作很流畅而Linux/Android却很卡顿呢?
  11. C# 开发和使用中的32个技巧
  12. 实参和形参的一些问题
  13. 百度网盘加速下载Motrix多线程下载器
  14. 各家船公司之GX介绍
  15. ASSIMP的数据结构
  16. 数据可视化大屏的4大优势盘点,超实用!
  17. UIUC 云计算概念:SWIM协议笔记
  18. 面试官:说说你对 options 请求的理解
  19. UI设计师、平面设计师常用的网站大全,初学者必备,大家都在用!
  20. 云计算、大数据、人工智能时代,为什么不能错过Linux?

热门文章

  1. 为什么properties中没有load方法_为什么游戏戒不掉?或许你没有找对正确方法
  2. 编译原理(第二版)张素琴 课后代码 A.2 C版本
  3. Java是什么?我们为什么要学习Java?
  4. Hydra Attention学习笔记
  5. AURIX Development Studio 使用
  6. Windows消息概述
  7. 中小企业如何化解经济危机
  8. 交换机不配access口能通吗_交换机的Access端口和Trunk端口
  9. 无法安装或运行此应用程序。该应用程序要求首先在全局程序集缓存(GAC)中安装程序集
  10. 关于eMule下载伤硬盘的话题(官方解释)