【为什么有人说Python的多线程是鸡肋呢?】

Python与机器学习 徐 自远 622℃

【为什么有人说Python的多线程是鸡肋呢?】

这话有一定道理,但不代表是事实。

先从多线程说起,需要先理清串行、并行和并发的概念。

从上图可知,并行的效率是最高的。

如果cpu等待外部任务完成的时间大于线程切换的时间,那么并发的效率是高于串行的。因此并发在绝大多数情况下比串行的效率高。

对于单核cpu下的多线程就是采用并发的方式。

python是解释型的语言,在设计之初为了数据安全,采用GIL(全局解释器锁):

1:每个线程需要先获取GIL

2:得到GIL的线程执行代码,主动sleep让出cpu或被挂起。

3:释放GIL以便下一个线程获取。

熟悉多线程编程的朋友,应该很轻易的理解。

显然python里一个进程永远只能由一个线程拿到GIL,GIL需要反复的释放、获取。

因此说”Python的多线程是鸡肋”是有道理的。

但是,就如同单个cpu采用并发的方式一样,能否认它的作用吗?

对于cpu密集型的线程来说,GIL确实影响很大。对于IO密集型,影响很小。

https://www.wukong.com/answer/6507230249766355204/?iid=18821494449&app=news_article&share_ansid=6507230249766355204&tt_from=android_share&utm_medium=toutiao_android&utm_campaign=client_share

 

转载请注明:徐自远的乱七八糟小站 » 【为什么有人说Python的多线程是鸡肋呢?】

喜欢 (0)

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号