zoukankan      html  css  js  c++  java
  • Python GIL(全局解释器锁)

    理解并发和并行

    并行:多个CPU同时执行多个不同的多任务。 就像两个程序(进程),这两个程序是真的在不同的CPU内同时执行多个任务。

    并发:CPU切换处理不同的多任务, 还是有两个程序,但只有一个CPU, 来进行切换处理两个多任务,而不是同时间内执行多任务(同一时间内的不同时间执行), 因为CPU切换的时间效率快,所以会让我们误认为 同一‘时间’内执行多任务。执行的先后顺序是由它们进行时间片资源的抢占。

    并发和并行都属性多任务,目的都是提高CPU的执行效率。注意的是:一个CPU不会实现并行的,既一个CPU不可能同时进行执行多个程序的,但是可以在一个随机时间内进行切换执行(并发)。一个人不可能同时边说话边吃饭,只有在时间间隔内才能做到

    谈谈GIL(全局解释器锁)

    GIL 称之为全局解释器锁,是为解决同一时刻内容只有一个线程在运行CPU。 比如一个进程内有多个线程在运行,一个线程在运行python程序时会占用python解释器,既前提是加了一把锁GIL,会使得该进程内的其他线程无法运行,只有等待该线程结束后,其他线程才会执行。 如果线程在运行的过程中遇到了耗时操作,则解释器锁会自动解开,让其他线程运行。 线程在运行的时候也会有先后顺序执行,而不是同时进行的。

    问题一: 全局解释器和互斥锁的关系
    全局解释器锁: 保证同一时刻只有一个线程在运行CPU
    互斥锁:互斥锁是为了解决资源竞争的问题,保证多个线程在修改全局数据,能够有序的修改数据,保证数据不会修改混乱

    问题二:什么时候会释放锁
    线程在遇到耗时操作,会释放锁。

  • 相关阅读:
    开源数据库
    深度学习TensorFlow笔记——学习率
    深度学习TensorFlow笔记——损失函数
    深度学习TensorFlow笔记
    Oracle常用内置函数
    Oracle数据库自带表或者视图
    Oracle数据库查询所有关键字
    IP代理网址
    时间、日历(time、calendar、datatime)
    selenium常用操作
  • 原文地址:https://www.cnblogs.com/kongguanghua/p/13267808.html
Copyright © 2011-2022 走看看