ToB企服应用市场:ToB评测及商务社交产业平台

标题: Python3假造机和对象 [打印本页]

作者: 小秦哥    时间: 2024-12-15 16:00
标题: Python3假造机和对象
2024年最保举的python3版本为3.11
python假造机和对象

Python对象和假造机_v4.pdf
Python假造机的原理
• 字节码天生
• 假造机运行
Python对象的实现
• 数据结构
• 类型体系
• 内存管理
Python假造机


字节码和呆板码有什么区别

字节码和呆板码是计算机程序实行的两种不同情势,它们之间的主要区别在于它们的实行方式宁静台依赖性。
总的来说,字节码和呆板码的主要区别在于它们的实行方式宁静台依赖性。字节码需要通过假造机来实行,而呆板码直接在硬件上实行。字节码通常是跨平台的,而呆板码是特定于某种处置惩罚器架构的。
字节码

怎么查看字节码?
使用compiler explorer,开源免费,在线使用:Compiler Explorer (godbolt.org)

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语言的运行时库,但它们在使用和功能上有一些区别。
总的来说,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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4