Python GIL(全局解释器锁)
2021-04-23 21:30
标签:一个人 随机 其他 关系 互斥锁 进程 先后 切换 个人 理解并发和并行 GIL 称之为全局解释器锁,是为解决同一时刻内容只有一个线程在运行CPU。 比如一个进程内有多个线程在运行,一个线程在运行python程序时会占用python解释器,既前提是加了一把锁GIL,会使得该进程内的其他线程无法运行,只有等待该线程结束后,其他线程才会执行。 如果线程在运行的过程中遇到了耗时操作,则解释器锁会自动解开,让其他线程运行。 线程在运行的时候也会有先后顺序执行,而不是同时进行的。 问题一: 全局解释器和互斥锁的关系 问题二:什么时候会释放锁 Python GIL(全局解释器锁) 标签:一个人 随机 其他 关系 互斥锁 进程 先后 切换 个人 原文地址:https://www.cnblogs.com/kongguanghua/p/13267808.html并行:多个CPU同时执行多个不同的多任务。 就像两个程序(进程),这两个程序是真的在不同的CPU内同时执行多个任务。
并发:CPU切换处理不同的多任务, 还是有两个程序,但只有一个CPU, 来进行切换处理两个多任务,而不是同时间内执行多任务(同一时间内的不同时间执行), 因为CPU切换的时间效率快,所以会让我们误认为 同一‘时间’内执行多任务。执行的先后顺序是由它们进行时间片资源的抢占。
并发和并行都属性多任务,目的都是提高CPU的执行效率。注意的是:一个CPU不会实现并行的,既一个CPU不可能同时进行执行多个程序的,但是可以在一个随机时间内进行切换执行(并发)。一个人不可能同时边说话边吃饭,只有在时间间隔内才能做到
谈谈GIL(全局解释器锁)
全局解释器锁: 保证同一时刻只有一个线程在运行CPU
互斥锁:互斥锁是为了解决资源竞争的问题,保证多个线程在修改全局数据,能够有序的修改数据,保证数据不会修改混乱
线程在遇到耗时操作,会释放锁。
文章标题:Python GIL(全局解释器锁)
文章链接:http://soscw.com/index.php/essay/78673.html