当前位置: 首页 > news >正文

江苏省建设厅网站 杨洪海做网站的傻瓜软件

江苏省建设厅网站 杨洪海,做网站的傻瓜软件,深圳建站公司专业公司,广告推广文案编者按#xff1a;在刚刚结束的 PyCon China 2022 大会上#xff0c;龙蜥社区开发者严懿宸分享了主题为《Python 启动加速的探索与实践》的技术演讲。本次演讲#xff0c;作者将从 CPython 社区相关工作、本方案的设计及实现#xff0c;以及业务层面的集成等方面进行介绍。…编者按在刚刚结束的 PyCon China 2022 大会上龙蜥社区开发者严懿宸分享了主题为《Python 启动加速的探索与实践》的技术演讲。本次演讲作者将从 CPython 社区相关工作、本方案的设计及实现以及业务层面的集成等方面进行介绍。 以下为本次演讲内容 一、Python 启动速度简析 首先从一个 Python 3 中空解释器启动时间的好事分析开始。我们可以看到主要的耗时都和 Python 包加载有关。 其中CPU 时间中包加载占据了 30% 左右的时间而 37% 的等待时间中磁盘 IO 等花费的时间也和包加载有较大的关联。 熟悉 Python 机制的朋友大概知道Python 中加载一个包首先会搜索对应的 pyc 文件这是一种序列化的字节码格式。找到之后会对其进行反序列化并执行其中的代码。如对应的 pyc 文件不存在会重新编译 py 文件得到字节码并序列化为 pyc 文件持久化保存。我们优化的主要目标主要集中在加载包这个过程希望能够至少免去每次查找、读取、反序列化的开销。 以 Python3.10 为例这里是使用 python 解释器启动一个空语句的所需时间同时使用了 -Ximporttime 打印出过程中加载每一个包的耗时。可以粗略地看到包加载时间大约占了总时间的 30% 左右。我们发现这种情况和 Java 虚拟机类似。在 Java 中Java 会首先将 Java 源代码编译为 Java 字节码随后由 Java 命令执行。 我们知道 Java 的优势并不包括启动速度这种流程也是原因之一。 那么 Java 如何部分解决这个问题呢 二、PyCDS 代码对象共享设计与实现 Java 中有一个叫做 CDS/AppCDS 的机制通过将 Java 字节码和一些辅助数据持久化保存在后续启动时使用 mmap 加载节约了磁盘 IO 和解析验证 class 文件的开销。 很自然的想法是如果我们希望在 Python 中使用类似的技术目标应该是 Python 字节码。 Python 默认从 py 文件导入模块的逻辑如上图左边所示首先根据制定的名字获取对应的规则随后尝试寻找 pyc 文件或重新编译。最后使用 exec 命令利用代码和一个空 dict 来创建模块并加入 runtime。 我们做的事情可以简化为右侧逻辑。同样根据包名尝试从 mmap 中加载。如果成功那么同样的 codeobject 也可以用于初始化。 这样做有什么直接的障碍 可以看到Python 中代码对象的 C 数据结构大致如图包括 consts、string、bytes 等 Python 数据类型。 以使用到的 codeobject 作为 root将涉及的数据序列化存储到内存映射中。 在这一步最直接的问题是内存随机化机制。在处理 code object 中的 Python 对象时每个 Python 对象头中都保存着指向当前进程中对应类型信息的指针。Runtime 通过这个指针判断该对象在 Python 中的类型。 以 PyCode_Type 为例如果不做处理这里会丢失类型信息红色 offset。 为了解决这个问题在我们创建的镜像文件中会保存涉及的对象指针。在加载时动态 patch 相关的指针。 在整个过程中涉及的 Python 类型包括 1. 常量bool/None/ellipsis 2. 字面量float/complex 3. 需要额外分配的变量long/bytes/str 4. containertuple/frozenset 对于常量和字面量在内存映射中分配好空间后直接赋值即可保存对于后两种需要模拟 Python 中变量初始化的逻辑创建合适的内存大小并写入对应位置。同时对于非常量的类型还需要对内存映射中的引用计数额外赋值防止意外触发 Python 中的回收。 以上就是本项目的大致内容另外关于项目的具体用法请前往 PyCDS 项目主页或我们在龙蜥实验室上的课程查看链接见下 龙蜥实验室课程https://lab.openanolis.cn/#/apply/chapters?courseId117 PyCDS 主页https://github.com/alibaba/code-data-share-for-python 原文链接 本文为阿里云原创内容未经允许不得转载。
http://www.zqtcl.cn/news/627281/

相关文章:

  • 为什么手机进网站乱码网络营销工具的特点
  • DW怎么做网站下拉菜单网站建设外包网站
  • 手机做兼职的网站设计公司注册记账代理公司
  • 如何在vs做网站建筑工程电影网
  • 甘肃网站开发网站建设自己在家接单
  • 龙岗网站制作资讯福田区龙岗区发布通告
  • 百度如何快速收录网站嘉兴手机建站模板
  • 服务注册中心有哪些给你一个网站你如何做优化
  • 我做网站如何分流客户openwrt 做视频网站
  • 徐州微信网站建设建设工程项目
  • 便宜网站建设公司envision wordpress
  • 网站怎么做百度快照logo网站域名做固定资产怎么处理
  • 2003 iis网站发布工会网站建设管理工作总结
  • 商城网站大概多少钱长沙网站设计公司推荐
  • 海南省交通建设局网站首页做网站开发一般用什么语言
  • 个人备案网站沭阳哪里可以做网站
  • 环球资源网站什么时候做的搜索引擎优化名词解释
  • 名者观看网站做商城网站还要服务器
  • 网站建设课程考核方案广州 天河网站设计
  • 写作网站哪个比较赚钱小红书推广运营
  • 明年做啥网站能致富网站 公众号 建设方案
  • wordpress怎么修改网站标题做招投标应该了解的网站
  • 大庆市网站建设公司dooplay主题wordpress
  • 小学网站建设实施方案手机网站策划书方案
  • 延边网站建设国外设计公司网站欣赏
  • 团队介绍网站建设武功县住房和城乡建设局官网站
  • 如何用模板做网站爱采购官网首页
  • 网站开发存在的问题wordpress 怎么登陆后台
  • 网站建设动态部分实训报告wordpress 普通文本 quot
  • 常州微信网站建设流程本地主机做网站服务器