首页 > 编程语言 >python基础-GIL

python基础-GIL

时间:2022-08-25 17:24:32浏览次数:60  
标签:多线程 python 基础 线程 IO GIL CPU

python速度慢的原因

动态类型语言,边解释边执行
GIL,无法利用多核CPU并发执行

GIL

同步线程的一种机制,使得任何时刻仅有一个线程在执行。在多核心处理器上,使用 GIL 的解释器也只允许同一时间执行一个线程

为什么有GIL这个东西?

简而言之:python设计初期,为了规避并发问题引入了GIL,现在想去除却去不掉

怎么规避GIL带来的限制?

多线程threading机制依然是有用的,用于IO密集型计算

因为在IO期间,线程会释放GIL,实现CPU和IO并行,因此多线程用于IO密集型计算依然可以大幅提升速度,

但是多线程用于CPU密集型计算时,只会更加拖慢速度。

使用multiprocessing的多进程机制实现并行计算、利用多核CPU优势

为了应对GIL的问题,python提供了multiprocessing

标签:多线程,python,基础,线程,IO,GIL,CPU
From: https://www.cnblogs.com/aleiyoy/p/16624944.html

相关文章

  • python基础-垃圾回收机制
    1.主)引用计数(referencecounting)引用计数为0时,该对象生命就结束了。维护引用计数消耗资源,循环引用L.append(L)L一直不回收(辅)标记清除机制(markandsweep)**目的:**解决......
  • python里的简洁操作
    1、lambda匿名函数好处精简代码,lambda省去了定义函数,map省去了写for循环过程:res=list(map(lambdax:'test'ifx==''elsex,a))    ......
  • python json用法 dump和dumps的区别;loads()和load()的区别
    json常用方法方法作用json.dumps()将python对象编码成Json字符串json.loads()将Json字符串解码成python对象json.dump()将python中的对象转化成json储存到......
  • 《零起点Python机器学习快速入门》PDF高清版下载
    《零起点Python机器学习快速入门》PDF高清版下载地址  内容简介  · · · · · ·《零起点Python机器学习快速入门》采用独创的黑箱模式,MBA案例教学机......
  • 窗口部件-基础窗口部件 QWidget
    1基础窗口部件QWidgetQWidget类是所有用户界面对象的基类,被称为基础窗口部件.不多废话直接看代码main.cpp如下#include<QtWidgets>intmain(intargc,char......
  • CSP基础知识(汇总)
    目录linux基础命令进制转换排序算法原码、补码、反码、计算运算符linux基础命令ls--查看当前目录下所有文件cd--切换目录cp--复制文件mv--移动文件touch--建立新......
  • 汇编基础
    寄存器处理器总是很繁忙的,在它操作的过程中,所有数据在寄存器里面都只能是临时存在一会儿,然后再被送往别处,这就是为什么它被叫做“寄存器”的原因早期的处理器,它的寄存......
  • python基础——函数
    函数函数就是将一段具有独立功能的代码块整合到一个整体并命名在需要的位置调用这个名称即可完成对应的需求。函数在开发过程中,可以更高效的实现代码重用。先定义后......
  • iOS开发入门基础篇
    iOS开发入门 任何C源程序,不经修改,即可通过Objective-C编译器成功编译Objective-C源程序中可以直接使用任何C语言代码除了面向对象有语法是SmallTalk风格的(下面会讲到),其......
  • 学习:python操作数据库(二)
    python连接数据库下载第三方包    创建表   ......