
Python
文章平均质量分 74
傈僳要吃吃
这个作者很懒,什么都没留下…
展开
-
Python运行时环境
允许有多个进程(Interpreter)存在,但通常只有一个Interpreter,这个Interpreter维护了一个或多个PyThreadState对象。Python在初始化时会创建一个主线程,所以其运行时环境中存在一个主线程,可以有多个线程。Python实现了对多线程的支持,而且一个线程就是操作系统上的一个原生线程。通过PyThreadState对象实现,所以可以将该对象视为线程本身的抽象。某一个PyFrameObject就是执行环境,一整个为执行环境。注:线程切换之前要保存关于当前线程的信息。原创 2024-08-29 21:27:06 · 776 阅读 · 2 评论 -
Python虚拟机
运行之前:运行时环境的初始化,与执行环境有区别运行之中:虚拟机的运行框架(具体实现过程)+运行时环境编译----->虚拟机运行Python虚拟机是否就在编译过程中生成PyCodeObject对象上进行所有操作?不是,PyCodeObject对象有字节码指令序列以及关于程序的所有静态信息,但是缺少程序运行的动态信息:名字空间、运行时栈、变长对象等。原创 2024-08-29 17:57:39 · 503 阅读 · 0 评论 -
栈与栈帧[源码层面]
栈帧是函数调用过程的活动记录,是虚拟机在实现过程/函数调用中使用的一种数据结构,使得虚拟机可以利用EBP寄存器访问局部变量、参数、函数返回值等数据。不是,因为PyCodeObject对象有字节码指令序列以及关于程序的所有静态信息,但是缺少程序运行时的动态信息(名字空间、运行时栈、变长对象)进栈(PUSH指令)会对ESP寄存器的值进行减法运算,使之减去4个字节(32位)或8(64位),然后将操作数写倒ESP指针所指向的内存中。出栈(POP指令)先从栈指针指向的内存中读取数据,然后再将栈指针的数值加上4/8。原创 2024-08-29 10:50:14 · 308 阅读 · 0 评论 -
python解释器[源代码层面]
/存储me_key的散列值,维护该值是避免每次查询时重新计算entry生存周期的四种状态unused态:me_key/me_value都是null(entry在初始化的时候)。Active态:entry存储了键值对的状态。Dummy态:me_key指向dummy对象(伪删除)。Pending态:键!=空,值=空(仅拆分),尚未插入到拆分表中。/*字典中项的数量*//*表示字典中对象版本*/#else/*表示字典中对象版本*/#endif。原创 2024-08-28 21:47:52 · 1133 阅读 · 0 评论 -
Cpython-Object对象概述
在Python中,对象就是为C中的结构体在堆上申请一堆内存,不能被静态初始化,不能在栈空间上生存。但 Python中的类型对象是例外,都是被静态初始化的。一个对象被创建,在内存中大小是不变的,所以维护容纳一个可变长度数据的对象(如:List类型),就必须在对象内维护一个指向一块可变大小区域的指针。原创 2024-08-24 21:51:12 · 471 阅读 · 0 评论 -
ctypes简单学习
ctypes是Python的外部函数库,提供与C兼容的数据类型,并允许调用DLL或共享库中的函数。可使用该模块以纯 Python形式对这些库进行封装。Linux与Windows平台不同,使用方法也有所不同,本文聚焦于Linux平台。原创 2024-08-19 20:21:38 · 416 阅读 · 0 评论 -
python源码中零碎知识
该文件定义了与随机数生成相关的接口和数据结构,提供了对内核态代码生成随机数的支持。这些随机数生成功能通常用于增强内核的安全性和可靠性,尤其是在需要高质量随机数的场景下,例如加密和安全密钥生成。这些标志组合在一起通常用于安全地打开文件,特别是在处理文件写入操作时。这些函数允许程序在运行时加载和使用共享库,而不是在编译时链接。这个标志可以影响调用的阻塞行为,使得在没有足够熵的情况下,调用不会阻塞。类型是在 POSIX 标准的信号量中定义的,它用于实现线程间同步。是一个配置文件,根据不同的平台和编译选项生成的。原创 2024-07-26 16:38:20 · 749 阅读 · 0 评论 -
树莓派3B+操作系统烧录
最近需要验证再在x86平台上交叉编译后的python代码是否能正常运行在ARM平台,手头刚好有一个树莓派,就拿来装个系统玩玩。原创 2024-07-17 12:26:48 · 582 阅读 · 0 评论 -
二、python及第三方库编译
在x86-64平台上生成arm平台上可执行的代码,在x86-64平台上编译python和python依赖库与第三方库,使之能运行在arm平台上。原创 2024-07-17 12:20:06 · 1580 阅读 · 0 评论 -
一、ubuntu20.04交叉编译环境配置arm-linux-gnueabihf-gcc
在ubuntu上源码构建python,编译结果适用x86-64平台,接下来需要编译python的C代码,使之适用于arm平台,方便后续操作。原创 2024-07-16 20:47:47 · 2991 阅读 · 0 评论