首页
关于
Search
1
Java期末复习
195 阅读
2
《概率论与数理统计》重难点
137 阅读
3
Java模拟题
88 阅读
4
数据结构期末复习
55 阅读
5
爱心学校课程研发进度安排
47 阅读
个人记录
工作相关
经验分享
登录
Search
Yuxuan HONG
累计撰写
8
篇文章
累计收到
35
条评论
首页
栏目
个人记录
工作相关
经验分享
页面
关于
搜索到
1
篇与
的结果
2024-09-22
信息学科竞赛教育训练计划——CPython初探
组员信息:230122183 洪宇轩(暑期计划结束,重新开题)230122185 温志宏基本目标在3~16周掌握CPython的基本架构和运行机制,能够理解其源码并具备一定修改或扩展能力。第3周:Python的高级特性目标:深入理解Python本身的一些高级特性,为后续理解CPython做好准备。学习内容:复习Python的基本语法和数据结构(列表、字典、元组等)理解Python中的内存管理机制:引用计数、垃圾回收了解Python中的对象模型(__dict__、__slots__)学习装饰器、生成器、上下文管理器等高级特性任务:使用Python实现一个简单的装饰器和生成器阅读Python官方文档中的数据模型章节第4周:C语言基础学习目标:掌握C语言的基本语法和数据结构,为后续阅读CPython源码做准备。学习内容:C语言基本语法(变量、控制流、函数)指针和内存管理结构体与联合体的使用动态内存分配(malloc/free)任务:使用C语言编写一些简单的程序:如冒泡排序、链表等理解指针的基本操作和内存管理第5周:了解CPython的架构目标:对CPython的整体架构有一个宏观的了解,理解其核心模块和执行流程。学习内容:CPython是如何将Python代码解释执行的理解CPython的架构:编译器、解释器、内存管理、垃圾回收等模块熟悉CPython的目录结构与核心文件(如pythonrun.c、ceval.c)了解编译和安装CPython的过程任务:下载并编译CPython源码:CPython官方GitHub找到并理解CPython核心文件中的函数,如PyObject结构第6周:动手搭建CPython开发环境目标:能够在本地成功编译CPython,并开始熟悉其源码。学习内容:在本地搭建开发环境(Linux/Mac/WSL环境更佳)安装所需的依赖和工具链(如GCC、Make)理解Makefile和CPython的编译过程学习如何进行简单的源码修改与重新编译任务:修改CPython的源码,使其打印出额外的调试信息重新编译并测试修改后的CPython第7周:字节码与解释器目标:了解Python代码是如何被编译为字节码,并由解释器执行的。学习内容:Python代码的执行过程:从源代码到字节码学习CPython的编译器模块,了解如何将Python源码转换为字节码深入阅读ceval.c文件,理解解释器的执行过程理解字节码指令和虚拟机的工作原理任务:编写一个简单的Python程序并使用dis模块查看其字节码阅读并理解CPython解释器的核心执行循环(PyEval_EvalFrameEx)第8周:对象模型与内存管理目标:理解CPython中对象的实现和内存管理机制。学习内容:理解Python对象模型,深入阅读object.c和obmalloc.c了解Python中每个对象的内存布局与引用计数垃圾回收机制:标记-清除算法与分代回收研究PyObject结构体的实现,理解其对各种Python对象的抽象任务:跟踪某些常用数据结构(如列表、字典)在内存中的分配和释放过程修改CPython源码,打印出每个对象创建和销毁的日志信息第9周:内建模块与扩展机制目标:理解CPython中的内建模块和如何编写C扩展模块。学习内容:学习CPython内建模块的实现,了解其与Python语言的交互了解Python的C API,学会如何编写C扩展模块深入理解import机制,了解模块的加载过程任务:阅读一些常见的内建模块(如math、sys)的源码编写一个简单的C扩展模块并在Python中调用第10周:调试与性能分析目标:掌握CPython的调试方法,并了解Python的性能瓶颈。学习内容:学习如何使用调试器(如gdb)调试CPython理解如何通过性能分析工具(如valgrind、perf)发现性能瓶颈了解影响Python性能的因素,如全局解释器锁(GIL)任务:使用gdb调试CPython源码,分析函数调用栈使用性能分析工具,分析一个Python程序的性能瓶颈第11周:CPython的线程与并发模型目标:理解CPython的并发模型以及全局解释器锁(GIL)的工作机制。学习内容:研究CPython中的线程模型和线程安全机制深入理解GIL的设计与影响学习CPython中的多线程与多进程模块实现任务:编写一个简单的Python多线程程序,观察GIL的影响阅读并理解CPython中与线程相关的源码部分第12周:垃圾回收机制深入研究目标:深入理解CPython的垃圾回收机制,尤其是分代回收机制。学习内容:了解CPython的垃圾回收算法及其优化策略深入阅读gcmodule.c,了解分代垃圾回收器的实现研究如何通过修改垃圾回收参数来优化性能任务:修改CPython源码中的垃圾回收参数,测试其对性能的影响编写一个Python程序,验证分代垃圾回收机制的效果第13周:学习Python 3的新特性及其在CPython中的实现目标:了解Python 3.x的新特性是如何在CPython中实现的。学习内容:阅读Python 3.x中的重要新特性(如类型注解、f-strings、异步IO)的实现理解这些特性在CPython中的实现细节任务:阅读某个新特性的PEP(Python Enhancement Proposal)在CPython源码中定位并理解相关实现第14周:探索CPython的优化机制目标:理解CPython中的性能优化技术与JIT的前景。学习内容:研究CPython中的优化机制,如快速路径优化、对象池等了解字节码优化与编译优化的区别任务:对比不同Python版本的性能优化,理解其源码差异第15周:尝试修改和扩展CPython目标:动手修改CPython源码,了解如何做出贡献。学习内容:按照自己的需求,尝试修改CPython的某个功能学习CPython贡献流程,提交Pull Request任务:完成一次简单的CPython源码修改并重新编译了解如何通过贡献者渠道提交代码第16周:总结与进阶方向目标:总结学习成果,规划下一步的学习方向。任务:总结CPython中的重要模块和机制制定后续进阶学习计划,如参与CPython社区、学习JIT优化等
2024年09月22日
24 阅读
0 评论
0 点赞