首页 > 编程语言 >聊聊Python中的GIL https://www.cnblogs.com/ArsenalfanInECNU/p/9968621.html

聊聊Python中的GIL https://www.cnblogs.com/ArsenalfanInECNU/p/9968621.html

时间:2023-03-24 11:22:21浏览次数:64  
标签:执行 www GIL Python 解释器 9968621 线程 多线程

抄自: https://www.cnblogs.com/ArsenalfanInECNU/p/9968621.html
GIL的全称是 Global Interpreter Lock,全局解释器锁。因为Python的执行依赖于解释器。Python最初的设计理念在于,为了解决多线程之间数据完整性和状态同步的问题设计为在任意时刻只有一个线程在解释器中运行。而当执行多线程程序时,由GIL来控制同一时刻只有一个线程能够运行。即Python中的多线程是表面多线程,也可以理解为fake多线程,不是真正的多线程。

可能有的同学会问,同一时刻只有一个线程能够运行,那么是怎么执行多线程程序的呢?其实原理很简单:解释器的分时复用。即多个线程的代码,轮流被解释器执行,只不过切换的很频繁很快,给人一种多线程“同时”在执行的错觉。聊的学术化一点,其实就是“并发”。

再拓展一点“并发”和“并行”的概念:

普通解释:
并发:交替做不同事情的能力
并行:同时做不同事情的能力
专业术语:
并发:不同的代码块交替执行
并行:不同的代码块同时执行

标签:执行,www,GIL,Python,解释器,9968621,线程,多线程
From: https://www.cnblogs.com/heris/p/17250896.html

相关文章

  • PYTHON - 正则表达式
    1.1正则正则表达式(RegularExpression),在代码中是预先定义好的一个规则串,这个规则串可以匹配,查找,替换那些符合规则的文本。1.2正则表达式字符串正则表达式的字符串由......
  • 和chatgpt的对话,写一个python脚本
    我:写一个python脚本。实现如下功能:1.通过调用openaiapi和chatgpt连续对话;2.创建chat模式的程序;3.用户在终端输入字符和命令的方式和chatgpt对话;4.程序的输出界面要有好;5.......
  • python的数据类型的转换
    1num=input('请输入一个小数:')#返回的是字符串类型的数据2print(num,type(num))3print(int(num),type(int(num)))4print(num,type(num))5print(int(float(......
  • 用python创建文件data.txt,共100行,每行循环存放一个1~100之间的整数。
      1list1=[]2f=open('data.txt',mode='a',encoding='utf-8')3withopen('data.txt',mode='a',encoding='utf-8'):4forrrrinrange(1,101):......
  • python读取linux服务下载数据文件
    importparamiko#pipinstallcx_Oracle-ihttps://mirrors.aliyun.com/pypi/simple/host='ip'port=22username='账户'password='密码'remote_path='服......
  • python读取ddl生成sql建表语句
    #导入需要的库importpandasaspdimportosdefread_ddl_create_tab_sql(file_path:str,table_name:str):df=pd.read_csv(file_path,sep='\|\@\|',index_col......
  • python对整个目录下面的所有文件进行处理的代码
    对整个目录里面的所有文件进行处理.实用场景:1)在整个目录下的文件中,哪些文件中有某个关键字出现2)备份某个目录下面的文件,比如:按照建立日期或者文件名按照月份进行......
  • 使用 Python 探索 感知机 算法
    动动发财的小手,点个赞吧!从理论到实践,我们将从简要的理论介绍开始研究感知机(器)学习方法,然后实现。在这篇博文的最后,您将能够了解何时以及如何使用这种机器学习算法,清楚......
  • Python多进程代码调试工具
    https://github.com/Lightning-AI/forked-pdbimportsysimportpdbclassForkedPdb(pdb.Pdb):"""PDBSubclassfordebuggingmulti-processedcodeSug......
  • python内置函数2
    sum()sorted()reversed()all()any()enumerate()zip()map()filter()......