前言:
好久没写文章了,今天来给大家更新一篇,非常实用的文章,希望能在工作中,帮助到你们
1、背景:
在程序开发过程中,每次增加新的需求,按照常规做法,你都要改项目代码,然后重新启动程序。
2、痛点:
这种方式很麻烦,如何改动很小的话,很得不偿失,
3、期望:
那么有没有一种方式,可以在不需要重新启动程序,就可以完成文件线上实时更新,且能被运行的程序正常读取到。
4、热乎乎的干货来了
答案有的,接下来,就是今天我们要介绍的” 热更新” 这一功能,也可以称之为 “插件系统”,所谓的 “插件系统”,看起来非常高大,实际上远离非常简单,我们的主程序定期扫描特定文件夹,如果发现新增文件或者有文件发生了修改,就热加载这个文件中的代码。
本文依托,python 的 importlib.reload 函数来实现此功能。
(1)首先创建一个 setting.py 文件,文件内容
1 | redis="你好" |
(2)再创建一个 ceshi.py 文件,文件内容
1 | import importlib |
我们在控制台运行 ceshi.py 文件
1 | python3 ceshi.py |
我们会看到控制台源源不断的 打印出 你好,如图所示:
我们保持程序在运行的同时,更改 setting 中的文件内容
1 | redis="你好,精神小伙" |
当我更改完之后,你就会发现控制台,输出内容变成了 “你好,精神小伙” 如图所示
这样愉快的就解决了我们问题
注 意 :
1、代码中的 importlib.reload(setting) 中的 setting,必须是 module ,也就是 setting 这个文件,否则会报错 **
2、如果你的程序是在,pycharm 上运行的话,会出现更新完文件,但是没有被及时打印出,这是因为,pycharm 有个缓存,不是实时写到硬盘上的,最好在更改完文件是,ctrl + s 保存下,就可以实时热加载了。
当然如果你是在 cmd 窗口运行,那就不需要担心了
彩 蛋 :
为了更好的在实际应用中,发挥作用,我们可以把这个功能,写成装饰器,代码如下:
1 | import importlib |
本文到此结束,这样就可以基于 importlib.reload,你可以写一段代码,监控某个特定的文件,一旦发现里面内容被新增、修改你就把这些变动的代码热加载一次。然后正在运行中的 Python 程序就可以不停机使用新增的功能了。
来做第一个留言的人吧!