Python3虚拟机和对象

news/2024/12/15 16:35:28/文章来源:https://www.cnblogs.com/zhaoqingqing/p/18608130

2024年最推荐的python3版本为3.11

python虚拟机和对象

Python对象和虚拟机_v4.pdf

Python虚拟机的原理
• 字节码生成
• 虚拟机运行

Python对象的实现
• 数据结构
• 类型系统
• 内存管理

Python虚拟机

image-20241009180202664

字节码和机器码有什么区别

字节码和机器码是计算机程序执行的两种不同形式,它们之间的主要区别在于它们的执行方式和平台依赖性。

  1. 字节码:字节码是一种中间代码,它不是直接在硬件上执行的,而是需要通过特定的虚拟机(如Java虚拟机或Python解释器)来解释执行。字节码通常是跨平台的,这意味着同一份字节码可以在任何安装了相应虚拟机的系统上运行,无论这个系统的硬件和操作系统是什么。

  2. 机器码:机器码是直接在硬件上执行的代码,它是特定于某种处理器架构的。机器码通常是由编译器从源代码生成的,它是非常低级的代码,直接对应于处理器的指令集。因为机器码是特定于处理器的,所以它通常不能在不同的硬件平台上运行。

总的来说,字节码和机器码的主要区别在于它们的执行方式和平台依赖性。字节码需要通过虚拟机来执行,而机器码直接在硬件上执行。字节码通常是跨平台的,而机器码是特定于某种处理器架构的。

字节码

怎么查看字节码?

使用compiler explorer,开源免费,在线使用:Compiler Explorer (godbolt.org)

image-20241009180959793

func.code.co_code就是字节码它是二进制字节码,把它复制进compiler explorer中

Include/opcode.h

注:python3.13之后?master分支放在opcode_ids.h中

• 常见指令
• 读 – LOAD_XXX: 变量, 属性,不是read
• 写 – STORE_XXX: 变量, 属性,也不是save
• 创建 – BUILD_XXX: list, tuple, dict, class,所以引擎里都使用buildxx
• 操作符 – XXX_OP: is, in, 数字操作符, 比较
• 函数调用 – CALL, PRECALL: foo(), self.foo()
• …

pycache

python2在当前目录下,python3在下面

保存的是meta info,加快速度

pystats

借用pystats,找到优化方向

ast树

把源代码解析成树,然后再对树进行处理

Frame中必须保存call Stack

Python虚拟机源码调试

CPython 3.11 -> ceval.c

Window: VisualStudio

扩展资料

运行库

glibc和CRT都是C语言的运行时库,但它们在使用和功能上有一些区别。

  1. glibc(GNU C Library)是GNU项目的一部分,它是Linux系统中最常用的C库。glibc实现了C语言的标准库,并提供了许多GNU特有的扩展功能。glibc不仅包含了C运行时库的功能,还包含了对操作系统服务的封装,例如文件操作、进程管理、网络访问等。

  2. CRT(C Runtime Library)是一个更通用的概念,它指的是C语言程序运行时所需要的一些基本函数库和运行环境。CRT可以是静态链接库,也可以是动态链接库。在Windows系统中,CRT通常包含在一些动态链接库(DLL)中,例如msvcrt.dll。

总的来说,glibc和CRT都提供了C语言程序运行所需的基本函数和环境,但glibc更专注于Linux系统,而CRT是一个更通用的概念,可以用于多种操作系统。

Python对象

一切皆为对象
• None, int, float, str, list, tuple, dict, class, instance, ..
• type – 顶层metaclass
• object – 顶层基类

PyObject* 万能类型,函数签名统一,使用py*传递再进行转换

顶层metaclass

内存管理

python3 dict中使用新的管理方式,同一个实例下,keys不变,只需要修改values

释放了python对象,内存却没有返还给系统?

因为python的内存返还最小单位不是block,而是整块

三层结构
• Block: 8B 512B
• Pool: 4KiB
• Arena: 1MiB

image-20241014130806088

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/853329.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Buffer

Buffer(缓冲器)1. 概念 Buffer 是一个类似于数组的 对象 ,用于表示固定长度的字节序列 Buffer 本质是一段内存空间,专门用来处理 二进制数据 。2. 特点 1. Buffer 大小固定且无法调整 2. Buffer 性能较好,可以直接对计算机内存进行操作 3. 每个元素的大小为 1 字节(byte)…

夜莺监控V6版本如何升级到V7

升级目的 为了使用新版本的一些功能特性,故此进行升级。 注意事项 软件升级通常关键三个点:二进制替换 配置文件按照最新的格式调整 数据库表结构所以,在做升级之前,一定要先做好备份,备份的内容对应变更的内容,即:二进制、配置文件、数据库。 升级过程这里演示以二进制…

数据采集与融合综合实践

综合设计——多源异构数据采集与融合应用综合实践这个项目属于哪个课程 2024数据采集与融合技术实践组名 数据"融合炖" 异构 "大杂绘"队项目简介 项目名称:味谱魔法 项目logo: 项目介绍:智能购物菜谱助手是一款结合AI技术的智能化应用,旨在为用户提供…

交易系统:退款单模型设计详解

大家好,我是汤师爷~ 和退款单作为整个交易逆向系统的核心,支撑着售后管理环节。 售后域核心概念模型1、退款单 退款单是记录和跟踪退款处理过程的核心业务单据,包含以下关键信息:租户ID:标识所属商户或组织 退款单ID:退款单的唯一标识 原订单ID:关联的原始订单 业务类型…

DDPM论文解读

Denoising Diffusion Probabilistic Models论文解读DDPM(Denoising Diffusion Probabilistic Models) 论文研究背景扩散概率模型(Denoising Diffusion Probabilistic Models, 简称DDPM)是近年来生成建模领域的重要发展之一。 生成模型的目标是学习数据分布并能够从中采样,…

AtCoder Beginner Contest 384 Solution

AtCoder Beginner Contest 384 (A-E) 题解A - aaaadaa (abc384 A) 题目大意 给个长度为n的字符串,以及两个字母a和b,要求把字符串中不是a的字符全部都变成b。 解题思路 一个循环判断一下就行了。 代码 #include<bits/stdc++.h> using namespace std; int main() {int n…

vs编译cpp时设置排除项

cpp编译排除 一个c++文件不需要被编译但还保留在工程中(阅读),可使用ExcludedFromBuild,有两种方法实现:图形化操作 改vs的项目配置文件图形化操作 在vs的资源管理器选中文件 - 右键 - 属性 - 切到当前的编译配置项(debug/release),有个选项【从生成中排除】,选择为是…

纪念程云大侠

与程云兄的缘份,起始于Delphi大富翁论坛,因 “程云的一堆SQL”而结缘,在论坛发起的第二次(玉渊潭)和第三次(香山)大富翁聚会中逐渐相熟。自2002年5月3日那场坛友初聚起,加上中间各种小聚,至近年来的4年多共事时光,不经意间,二十余载岁月已悄然流逝,往昔匆匆,仿若弹…

css第三天案例练习

案例一:新闻详情 字体颜色:color 字体大小:font-size 段落开头空两行:font-indent:2em 水平居中:图片(出错点)/文字text-align:center 字体粗细:font-weight:400(取消加粗)案例二:css简介 超链接设置格式

DVR4 pg walkthrough Intermediate window

nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A -sS 192.168.219.179 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-15 04:22 UTC Stats: 0:00:22 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan SYN Stealth Scan Timing: About 34.76% d…

计算机网络课程笔记

计算机网络课程 该笔记于 2024年12月15日15:14:02 编写 常用命令以及简写完整命令 简写形式 解释configure terminal conf t 进入全局配置模式enable en enableexit ex 退出当前模式hostname host 重启设备interface int 进入接口配置模式shutdown shut 禁用接口no shutdown no…

监测预警智能分析中心建设项目方案

随着科技的不断进步,地理信息与遥感技术在国家治理、环境保护、灾害预警等领域发挥着越来越重要的作用。监测预警智能分析中心的建设,旨在通过集成先进的遥感技术、地理信息系统(GIS)、大数据分析和人工智能(AI)技术,实现对环境变化、灾害风险的实时监测和智能预警。本文…