python3.6.4的importlib模块重载用法

了解:模块的重载

考虑到性能的原因,每个模块只被导入一次,放入字典sys.module中,如果你改变了模块的内容,你必须重启程序,python不支持重新加载或卸载之前导入的模块,

有的同学可能会想到直接从sys.module中删除一个模块不就可以卸载了吗,注意了,你删了sys.module中的模块对象仍然可能被其他程序的组件所引用,因而不会被清楚。

特别的对于我们引用了这个模块中的一个类,用这个类产生了很多对象,因而这些对象都有关于这个模块的引用。

如果只是你想交互测试的一个模块,使用 importlib.reload(), e.g. import importlib; importlib.reload(modulename),这只能用于测试环境。

例子

aa.py

def func1():
    print('func1')

-

test.py

import time,importlib
import aa
time.sleep(10)
# importlib.reload(aa) 用于模块重新加载
aa.func1()

在10秒的等待时间里,修改aa.py中func1的内容,等待test.py的结果。

打开importlib注释,重新测试

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏草根专栏

使用Angular CLI生成路由

为应用生成路由. 先创建一个项目: ng new my-routing --routing ? 可以看到生成了两个module. 看一下routing modu...

399130
来自专栏西安-晁州

使用eclipse创建maven web项目

1、新建项目: ? 2、选择模板: ? 3、输入项目信息: ? 4、新建的项目结构,发现index.jsp报错,直接删除重新创建一个index.jsp文件后,发...

25500
来自专栏运维小白

增加网卡注意点

在虚拟机增加一个新的网卡之后,并设置为仅主机模式 开启虚拟机,用ifconfig命令,查看是否已经加载了网卡——>安装ifconfig包:yum install...

23980
来自专栏xingoo, 一个梦想做发明家的程序员

公司内网,无法使用yum在线下载,肿么办?

1 配置上网代理   编辑/etc/yum.conf,增加如下属性: proxy=你的代理地址 proxy_user=你的用户名 proxy_passwor...

336100
来自专栏西安-晁州

nodejs应用离线安装部署、卸载

公司写的文档,直接粘贴过来了: 本文档提供node应用一键安装、部署、卸载说明,包含对应脚本文件 默认版本: 1、nodejs:v6.11.2.linux-...

37200
来自专栏DT乱“码”

Java知识图谱收集整理

1、Java学习路径1 ? 2、Java学习路径2 ? 3、Java Web学习路径 ? 4、Java编程所需的工具及知识 ? 5、Java集合类 ? 6、Ja...

30990
来自专栏积累沉淀

hbase集群安装(1)-ssh安装及配置

安装ssh服务器端 赋予tg用户权限 sudo chown -R tg:tg /software/ ? 查看用户被赋予的权限 ? 1.检查ssh客户端是否安装:...

21750
来自专栏Aloys的开发之路

Unix/Linux操作系统中如何在sqlplus/rman中使用方向键

默认情况下在Unix/Linux中使用Oracle的sqlplus/rman是无法使用↑↓←→几个方向键进行操作的,要想达到Windows下使用sqlplus/...

21660
来自专栏静下来

windows服务器iis7.5安装多个php版本切换设置

因为某个网站程序的配置是在php5.3上面运行的,不兼容我现在的php5.5.所以就只能再安装个5.3的了。 在安装过程中,忘记截图了。。。就直接写吧。 准备工...

1.1K40
来自专栏史上最简单的Spring Cloud教程

Openresty最佳案例 | 第6篇:OpenResty连接Mysql

centos 安装mysl Centos系统下安装mysql,先下载mysql-community-release-el7-5.noarch.rpm,然后通过y...

43590

扫码关注云+社区

领取腾讯云代金券