美文网首页Python
[Python]热更新

[Python]热更新

作者: _小老虎_ | 来源:发表于2018-10-24 20:41 被阅读11次

热更新机制的目标是:
(1)更新代码定义
(2)不更新数据对象
(3)不要依赖热更新机制解决所有问题。过于复杂的改动,重启进程

Python的builtins中有一个众所周知的reload,但它在大项目中的可用性几乎为零也是众所周知的。它辜负了Python Documentation中对它的评价:
"This is useful if you have edited the module source file using an external editor and want to try out the new version without leaving the Python interpreter"

这里简单翻译一下Python内建的reload的说明:
当reload(M)被执行后:

  • M模块将被重新解释字节码。并再执行模块级定义的执行语句(译注:由此应认识到在模块级就编写函数调用和类对象生成是多么坏的习惯呀)。并在M模块内定义一个新的 命名->新对象 的命名空间映射。

  • M模块reload前的所有旧对象,直到它们的引用数量降到0,才可能被gc回收。

  • M模块的命名空间中的命名全部指向了新的对象。

  • 其他模块中对M模块reload前的旧对象的引用,仍然维持旧对象的引用; 如果你希望其他模块对M模块的相关对象引用能同时更新为M中的新对象, 那需要你自己动手。

Python2 中可以直接使用reload(module)重载模块。
python会生成新的字节码,从而达到热更新的状态,执行一次就OK.

相关文章

  • [Python]热更新

    热更新机制的目标是:(1)更新代码定义(2)不更新数据对象(3)不要依赖热更新机制解决所有问题。过于复杂的改动,重...

  • Lua脚本热更新

    本文继续来写一下脚本代码的热更新在游戏客户端或服务端的实现,之前写了一篇【客户端python热更新】里面提到热更新...

  • 客户端python热更新

    介绍: 热更新,就是在维持服务不间断的情况下,对软件代码逻辑或配置数据进行更新修复。随着游戏项目引入了脚本语言以后...

  • 热更新

    参考文章 https://www.jianshu.com/p/2f356e3276b8

  • 热更新

    热更新技术背景 1.热更新定义,APP热更新,就是指软件不通过苹果APP Store的版本更新审核,直接可以自行更...

  • 热更新

    mono热更新 更新过程中强退导致dll损坏 问题的产生是这样的:我们的代码文件随着开发会越来越打,当更新一个 d...

  • 热更新

    需要前端把更新后的代码生成chcp.manifest 第一部: npm i -g cordova-hot-...

  • 热更新

    腾讯热更新 https://gold.xitu.io/post/584a70feac502e00691c4a07 ...

  • 热更新

    一、安装CodePush CLI 在项目根目录下,安装命令: yarn add code-push-cli 安...

  • 热更新

    游戏更新分为两种,一种是游戏内热更,这个不分渠道,所有的游戏包都去游戏的热更服务器去加载资源(一般是资源文件和非底...

网友评论

    本文标题:[Python]热更新

    本文链接:https://www.haomeiwen.com/subject/scxftqtx.html