为什么在 GIL 存在的情况下在 python 中编写异步代码?

why write async code in python while GIL exists?

我想知道,如果 python GIL 只允许一个线程/进程一次 运行,我为什么要使用 asyncio,我知道线程之间的切换很昂贵,但仅此而已?这是 asyncio 在 python?

中的唯一优势

Python 中的线程效率低下,因为 GIL(全局解释器锁),这意味着多个线程不能 运行 并行,正如您在 [=22] 上所期望的那样=] 系统。加上你必须依赖解释器在线程之间切换,这增加了效率低下。

asyc/asyncio 允许单线程内的并发。作为开发人员,这为您提供了更细粒度的任务切换控制,并且可以为并发 I/O 绑定任务提供比 Python 线程更好的性能。

您没有提到的第三种方法是 multiprocessing。这种方法使用进程进行并发,并允许程序充分利用多核硬件。