一、为什么需要模块重载?
1.1 传统开发流程的痛点
graph LR
A[修改代码] --> B[停止程序]
B --> C[重新启动]
C --> D[恢复状态]
D --> E[测试修改]
这个流程耗时且破坏程序状态,对于:
- 加载了大量数据的程序
- 建立了复杂连接的服务
- 运行时间很长的计算任务 尤其痛苦!
1.2 热重载的优势
graph LR
A[修改代码] --> B[重载模块]
B --> C[继续执行]
零重启 ,状态保留 ,即时生效!
二、基础重载技术
2.1 最简单的重载示例
arduino
// 文件夹结构
├── src/
│ ├── main.py
│ └── Test/
│ ├────── module.py
│ └────── __int__.py
python
# 初始模块: module.py
def say_hello():
print("Hello v1!")
# 主程序
import Test.module
import time
import importlib
Test.module.say_hello() # 输出:Hello v1!
time.sleep(10) # 延迟10s中,方便修改moude.py文件查看效果
importlib.reload(Test.module)
Test.module.say_hello() # 输出:Hello v2!
# 修改module.py
def say_hello():
print("Hello v2!")
2.2 importlib.reload的注意事项
- 只影响后续的调用
- 已创建的实例不会自动更新
- 不会修改已导入的别名
python
from my_module import say_hello
hello_alias = say_hello
importlib.reload(my_module) # 不会影响hello_alias
2.3 更多的模块重新加载,热更新
结语
点个赞,关注我获取更多实用 Python 技术干货!如果觉得有用,记得收藏本文!