快捷搜索:

干什么说python二十四线程未有真的得以达成多现

2019-12-17 作者:2019精准正版资料   |   浏览(155)

Python中的多线程没有真正实现多现程! 为什么这么说,我们了解一个概念,全局解释器锁(GIL)。

Python代码的执行由Python虚拟机(解释器)来控制。

Python在设计之初就考虑要在主循环中,同时只有一个线程在执行,

就像单CPU的系统中运行多个进程那样,内存中可以存放多个程序,

但任意时刻,只有一个程序在CPU中运行。

同样地,虽然Python解释器可以运行多个线程,只有一个线程在解释器中运行。

 

对Python虚拟机的访问由全局解释器锁(GIL)来控制,正是这个锁能保证同时只有一个线程在运行。在多线程环境中,Python虚拟机按照以下方式执行。

1.设置GIL。

2.切换到一个线程去执行。

3.运行。

4.把线程设置为睡眠状态。

5.解锁GIL。

6.再次重复以上步骤。

 python 每执行100个字节码,GIL锁就会解锁一次,让其它线程执行,所以,python多线程环境,是交替执行,上下文切换,并没有同一时刻执行代码.

本文由正版香港马报免费资料发布于2019精准正版资料,转载请注明出处:干什么说python二十四线程未有真的得以达成多现

关键词: