zoukankan      html  css  js  c++  java
  • Python基础(十三) 为什么说python多线程没有真正实现多现程

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

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

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

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

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

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

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

    1.设置GIL。

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

    3.运行。

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

    5.解锁GIL。

    6.再次重复以上步骤。

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

  • 相关阅读:
    Gerrit配置--用户配置
    repo+manifests+git方式管理安卓代码
    FLASH OTP
    Wireshark抓包分析TCP协议
    python 批量修改图片大小
    python 文件查找 glob
    python 统计单词个数
    python 图片上添加数字源代码
    python 删除文件和文件夹
    python 程序列表
  • 原文地址:https://www.cnblogs.com/yhleng/p/7976192.html
Copyright © 2011-2022 走看看