无事水,但要好好学习
Nothing else, but still kids.
|

Nolca

园龄:6年9个月粉丝:12关注:9

python网络编程:异步与多线程,异卵双胞胎!

异步 多线程 多进程
比喻 一个在烧水、泡衣服与洗碗的人 很多洗碗的人 很多语言不通的洗碗的人
核心 很多需要等待的函数同时运行 很多计算任务同时运行
原理 await转让控制权,再次事件循环 共享内存 不共享,使用IPC跨进程消息沟通
限制 - 若 async 函数内有耗时操作 , 会阻塞事件循环
- async有传染性
- 原子锁/资源竞争
- python的GIL 会导致CPU密集型(计算)缓慢 , 但不影响I/O操作(如Popen)
进程间通信开销较大,创建和销毁进程的成本较高

虽然在python 3.13引入了实验性的 无GIL锁 支持,快了1倍!

事件循环

大部分编程语言的底层实现:

微任务 → 宏任务 → 异步队列 $ \overset{\text{遇到await}}{\longrightarrow} $ 微任务……

本文作者:Nolca

本文链接:https://www.cnblogs.com/nolca/p/18745442

版权声明:本作品采用 收益分享revenue sharing 许可协议进行许可。

posted @   Nolca  阅读(3)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 ⏩intro 山姆精
  2. 2 🎸吉他 马叉
  3. 3 ☁升调 山姆精
  4. 4 🐦Flutter Virtual Riot/Madi
  5. 5 🎶纯律 山姆精
  6. 6 👻yeah~Color Bass! VR
👻yeah~Color Bass! - VR
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.