GIL和gevent

GIL:
从工程的角度来看,GIL的优点远大于缺点。
GIL使得python的多线程并发非常可靠,不需要加任何细粒度的锁来保证正确性,保证了python的单线程性能的最优化。
GIL的问题无非是一个python进程只能跑满一个核,无法利用多核。
但是多核并发python完全可以通过多进程和通信来更好地解决。
所以GIL解决了很多问题却没有给python真正带来短板。


Gevent:
gevent是python的一个并发框架,以微线程greenlet为核心,使用了epoll事件监听机制以及诸多其他优化而变得高效。
当一个greenlet遇到IO操作时,比如访问网络/睡眠等待,就自动切换到其他的greenlet,等到IO操作完成,再在适当的时候切换回来继续执行。
由于IO操作非常耗时,经常使程序处于等待状态,有了gevent为我们自动切换协程,就保证总有greenlet在运行,而不是等待IO。
同时也因为只有一个线程在执行,会极大的减少上下文切换的成本。

posted @ 2020-07-15 17:13  Adamanter  阅读(221)  评论(0)    收藏  举报