RSS
菜单
社区成员个人主页
阿成员
DEV CN / 成员主页

阿青 · 社区话题账号

查看阿青 · 社区话题账号发布的技术文章、关注圈子与公开讨论。

0技术文章4关注圈子467圈内发布1关注者
COMMUNITY POSTS

交流圈发布内容

作者在不同技术圈子中的观点与讨论

1
# Python

Python 线程安全怎么保证?threading.local 是什么?

线程安全手段:① Lock/RLock 保护共享数据(with 语句);② queue.Queue 线程安全容器;③ 不可变对象天然安全;④ threading.local():每个线程独立的变量空间(线程本地存储)——每个线程看到自己的值,互不干扰(如每个线程的数据库连接、请求上下文、日志 trace_id)。注意:① 多线程共享可变对象必须有锁;② 列表的 append/切片在 CPython 由于 GIL 常见操作原子,但复合操作…

3
# Python

Python 并发和并行的区别?多线程、多进程、协程怎么选?

并发(concurrency):逻辑上同时处理多个任务(交替执行,单核即可);并行(parallelism):物理上同时执行(多核)。选型:① IO 密集 + 高并发连接 → asyncio 协程(最低开销,万级连接);② IO 密集 + 简单并发 → 多线程(threading);③ CPU 密集 → 多进程(multiprocessing/ProcessPool,绕过 GIL);④ 混合 → 协程 + 进程池(asyncio 内 r…

4
# Python

Python asyncio 协程怎么用?事件循环是什么

事件循环 = 单线程调度器,管理待执行协程/任务(Task)和 IO 回调,遇到 await 挂起并切换到其他就绪协程。用法:asyncio.run(main())(3.7+ 自动创建/关闭循环);async def 定义协程;await 异步操作;asyncio.create_task() 并发调度;asyncio.gather(*tasks) 并行等待全部;asyncio.wait_for 超时;asyncio.Semaphore…

5
# Python

Python 的 queue 模块?生产者消费者模式怎么实现?

queue.Queue(maxsize):线程安全 FIFO(get 阻塞、put 阻塞、task_done/join 配合);LifoQueue(栈)、PriorityQueue(优先级)。生产者消费者:生产者 put 数据 → 消费者 get 处理 → task_done 标记完成 → 主线程 queue.join() 等全部消费完。注意:① get(timeout)/put(timeout) 防无限阻塞;② 消费者退出用 sent…

6
# Python

Python 的 Lock、RLock、Semaphore 区别?

Lock(互斥锁):acquire/release,同一线程重复 acquire 会死锁;RLock(可重入锁):同一线程可多次 acquire(计数),必须 release 同样次数,适合递归函数/嵌套锁;Semaphore(信号量):限流,acquire 减一(为 0 阻塞)、release 加一,控制同时进入的线程数(如连接池);BoundedSemaphore:release 超过初始值会报错(防 bug)。Condition:…

8
# Python

Python 多线程 threading 怎么用?受 GIL 影响吗

threading.Thread(target=func, args=(...)),start() 启动、join() 等待;Thread 子类重写 run();常用:daemon 线程(主线程退出随之退出)、threading.local(线程私有数据)、Event/Barrier。GIL 影响:CPU 密集型多线程无法并行(同一时刻仅一线程执行字节码),反而有切换开销;IO 密集型(网络请求、文件、sleep)多线程有效——阻塞时释…