dsa*_*389 4 python gil python-asyncio
我想知道,如果 python GIL 只允许一次运行一个线程/进程,为什么我应该使用 asyncio,我知道线程之间的切换很昂贵,但是就是这样?这是Python中asyncio的唯一优点吗?
小智 7
由于GIL(全局解释器锁)的存在,Python 中的线程效率很低,这意味着多个线程无法像您在多处理器系统上所期望的那样并行运行。另外,您必须依赖解释器在线程之间切换,这会增加效率低下。
asyc/asyncio 允许单个线程内的并发。作为开发人员,这为您提供了对任务切换更细粒度的控制,并且可以为并发 I/O 绑定任务提供比 Python 线程更好的性能。
您没有提到的第三种方法是multiprocessing。这种方法使用进程进行并发,并允许程序充分利用具有多核的硬件。