分享

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

 庆亮trj21bcn0z 2018-01-05

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多