知其然,知其所以然
Python 2026-09-26

cProfile:一次函数调用如何变成性能统计

本机真实用cProfile对fib(22)这一个朴素递归调用做性能分析,真实统计出57313次函数调用只花了0.008秒。

Python 真实验证 动画演示
Python 2026-09-26

timeit 的陷阱:为什么简单测速经常不准确

本机真实用timeit对sum(range(100))连续测3次number=1的单次耗时,真实拿到完全不同的三个数字,验证正确用法该怎么设置number和repeat。

Python 真实验证 动画演示
Python 2026-09-26

Python 内存分配器:为什么释放对象后 RSS 不一定下降

本机真实分配20万个bytearray后del+gc.collect(),用resource.getrusage真实测得进程RSS没有下降反而多涨了16字节。

Python 真实验证 动画演示
Python 2026-09-26

tracemalloc:如何定位真正的内存增长来源

本机真实用tracemalloc对比两次快照,直接定位到真正在增长的两行代码,比RSS这种黑盒指标精确到了代码行级别。

Python 真实验证 动画演示
Python 2026-09-26

列表推导式、生成器表达式和 map:性能差异从哪里来

本机真实对20万元素跑5种真实计时对比,列表推导式建完整列表真实最快,map+lambda反而真实最慢。

Python 真实验证 动画演示
Python 2026-09-26

functools.lru_cache:缓存键、淘汰策略和递归优化

本机真实给递归fib加上@lru_cache后,fib(30)真实只调用了31次,验证lru_cache怎么把指数级递归压成线性。

Python 真实验证 动画演示
Python 2026-09-26

weakref:弱引用为什么不会阻止对象被回收

本机真实创建weakref.ref并绑定回调,del原对象后真实ref()立刻变成None、回调真实被触发,WeakValueDictionary真实自动清理失效key。

Python 真实验证 动画演示
Python 2026-09-25

asyncio 事件循环:一个线程怎么同时处理很多任务

本机真实用Python 3.14跑50个asyncio任务,真实验证它们全部只用了1个OS线程,并发50个任务的真实耗时(0.1s)跟串行50个任务的真实耗时(5s)差了50倍。

Python 真实验证 动画演示
Python 2026-09-25

await 到底暂停了什么:协程、Task 和 Future 的关系

本机真实对比await两个裸协程(0.4023s)和await两个Task(0.2011s)的耗时差距,验证Task真实是在create_task那一刻就被调度上事件循环的,不是等你await才开始跑。

Python 真实验证 动画演示
Python 2026-09-25

asyncio 为什么会阻塞:一个同步函数拖慢整个事件循环

本机真实让1个任务用time.sleep(0.5)阻塞,另外3个任务只需要asyncio.sleep(0.1),真实验证这3个任务被拖到了0.6秒才完成,跟全部用asyncio.sleep时的0.1秒完成形成鲜明对比。

Python 真实验证 动画演示
Python 2026-09-25

multiprocessing:Python 如何绕过 GIL 使用多核

本机真实跑一个CPU密集任务,单线程串行2.32秒,2个线程并发2.37秒(GIL下完全没提速),2个进程并发1.17秒(真实提速约2倍),10核CPU真实验证multiprocessing才能绕开GIL。

Python 真实验证 动画演示
Python 2026-09-25

多进程通信:Queue、Pipe 和共享内存怎么选

本机真实测Queue传输1000万个float64(0.19秒)、Pipe做2000次ping-pong(平均17微秒/次)、shared_memory让子进程零拷贝原地修改数组,三种跨进程通信方式真实的代价完全不同。

Python 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号