上一页 1 2 3 4 5 6 ··· 9 下一页
摘要: 申请GIL static void take_gil(PyThreadState *tstate) { ... // 获取mutex,然后就可以安全地访问GIL了 MUTEX_LOCK(gil->mutex); // 不断检查GIL状态,一直等到GIL被释放 while (_Py_atomic_lo 阅读全文
posted @ 2022-03-21 22:41 鸪斑兔 阅读(370) 评论(0) 推荐(0) 编辑
摘要: 1、GIL的作用:保证任意时刻仅有一个线程在执行,防止多线程并发执行导致的数据异常。 2、操作系统的pthread_mutex_t也能达到线程互斥的作用,为什么不用? 注:Linux 环境中,实现线程同步的常用方法有 4 种,分别称为 互斥锁 、 信号量 、 条件变量 和 读写锁 。 互斥锁 (Mu 阅读全文
posted @ 2022-03-17 22:47 鸪斑兔 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 1、Python虚拟机参数 2、Python代码中的宏定义常量 3、pyc文件剖析 4、AST 5、site模块 6、import hook 阅读全文
posted @ 2022-03-04 00:32 鸪斑兔 阅读(392) 评论(0) 推荐(0) 编辑
摘要: Linux的/proc目录下有很多文件可以显示内核信息,甚至可以通过修改文件改变一些内核的参数。这是怎么做到的呢? 其实/proc目录下的文件都实现了Linux的VFS接口,每个文件可以认为对应一个内核参数。实现VFS接口后就可以像普通文件一样读写了。 每当收到文件查看请求时,就转换为对内核参数的访 阅读全文
posted @ 2022-02-23 00:05 鸪斑兔 阅读(121) 评论(0) 推荐(0) 编辑
摘要: PyCodeObject:代码对象,就是一段代码编译后形成的对象,函数中对应的就是函数体的代码编译结果。 PyFunctionObject :函数对象,它是对PyCodeObject的封装,相当于 PyCodeObject + 函数def定义这一行代码。它在PyCodeObject基础上增加了函数的 阅读全文
posted @ 2022-02-20 23:25 鸪斑兔 阅读(553) 评论(0) 推荐(0) 编辑
摘要: cmake_minimum_required(VERSION 3.0)project(cpython)file(GLOB SOURCE_FILES Python/*.c Parser/*.c Objects/*.c Modules/*.c)include_directories(Include)in 阅读全文
posted @ 2022-02-10 09:27 鸪斑兔 阅读(57) 评论(0) 推荐(0) 编辑
摘要: https://pubs.opengroup.org/onlinepubs/009604499/utilities/xcu_chap02.html 阅读全文
posted @ 2021-11-29 09:55 鸪斑兔 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 有一种观点:协程就是函数调用栈。每增加一个协程,就增加一个函数调用栈。 这个是从实现的角度来解释协程,确实可以让大家清楚协程实现的原理。 通常来说,每调用一个函数都会生成一个调用栈帧,记录函数执行时需要的各种信息,函数退出时销毁栈帧,返回上次调用者的栈帧里接着执行。 而协程给开发者提供了在多个函数之 阅读全文
posted @ 2021-11-17 11:49 鸪斑兔 阅读(146) 评论(0) 推荐(0) 编辑
摘要: https://flaggo.github.io/python3-source-code-analysis/ https://fasionchan.com/python-source/ https://he11olx.com/tags/CPython3-6%E6%BA%90%E7%A0%81/ ht 阅读全文
posted @ 2021-11-17 11:43 鸪斑兔 阅读(267) 评论(0) 推荐(0) 编辑
摘要: cmake_minimum_required(VERSION 3.0)project(cpython)file(GLOB SOURCE_FILES Python/*.c Parser/*.c Objects/*.c Modules/*.c)include_directories(Include)in 阅读全文
posted @ 2021-11-17 11:37 鸪斑兔 阅读(176) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 9 下一页