-
实例12-1 GIL对CPU密集型任务的影响
-
实例12-2 GIL对IO密集型任务的影响
-
实例12-3 GIL工作原理模拟器
-
实例12-4 运行演示
-
实例12-5 线程安全问题
-
实例12-6 锁机制
-
实例12-7 信号量
-
实例12-8 定义生产者线程
-
实例12-9 定义消费者线程
-
实例12-10 测试生产者与消费者模式
-
实例12-11 Queue最常用的线程安全数据结构
-
实例12-12 线程安全的字典和列表
-
实例12-13 自定义线程安全类
-
实例12-14 死锁的产生
-
实例12-15 资源有序分配
-
实例12-16 一次性申请所有资源
-
实例12-17 使用超时机制避免死锁
-
实例12-18 使用线程局部存储避免锁竞争
-
实例12-19 使用无锁数据结构
-
实例12-20 使用线程池避免线程创建销毁开销
-
实例12-21 任务分片与工作窃取
-
实例12-22 IO 密集型和CPU密集型任务优化
-
实例12-23 基础多进程演示
-
实例12-24 进程间内存隔离演示
-
实例12-25 模拟CPU密集型任务
-
实例12-26 队列-最常用的IPC方式
-
实例12-27 管道-双向通信通道
-
实例12-28 共享内存-高性能数据共享
-
实例12-29 管理器-复杂的共享对象
-
实例12-37 核心概念三剑客
-
实例12-38 任务并发asynio.gather
-
实例12-39 竞争并发asyncio.wait
-
实例12-40 队列并发asyncio.Queue
-
实例12-47 任务创建优化
-
实例12-48-1 限制并发数-无限制并发可能导致内存爆炸
-
实例12-48-4 限制并发数-性能对比演示
-
实例12-48-5 限制并发数-使用ConnectionPool的演示
-
实例12-48-6 限制并发数-主函数
-
实例12-49 正确的异常处理
-
实例12-50 检测阻塞调用
-
实例12-51 任务执行时间监控
-
实例12-52 内存使用优化
©2023 讯达学院


