GIL(全局解释器锁)
来一道GIL面试题
描述python GIL的概念,以及他对python多线程的影响,编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否比单线程有所提升,并解释原因。
参考答案:
1.python语言和GIL没有关系,仅仅是由于历史原因在CPython虚拟机(解释器),难以移除GIL
2.GIL:全局解释器锁,每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码
3.线程是放GIL的情况:在IO操作等可能会引起阻塞的system call之前,可以暂时释放GIL,但在执行完毕后必须重新获取GIL
4.python使用多进程是可以利用多核的资源的
5.多线程爬取比单线程有提升,因为遇到IO阻塞会自动释放GIL锁
为python喊冤
GIL全局解释锁与python没有一点的关系,只是跟cPython解释有关,那什么由解释器呢?我们都知道,机器只认得0,1这样组成的数字,而我们写的代码却不是,那么我们就就需要将我们写的代码转化为机器认识的0,1,那么解释器就是干了这么一件事。然而解释可以用c,java,c#等其他语言写,但python官网推荐是c写的解释器,人们就叫他cpython.java也写过一个解释器叫Jpython.而cpython解释器中有GIL,Jpython中没有。
GIL特点
1.保证同一时刻只有一个线程在做,不管是主线程,还是子线程。记住,只是对线程,
2.他会在合适的时间转到其他线程上执行,比如IO阻塞的时候,他不会等待,而是执行其他的线程
3.计算密集型程序(用进程)能比较直观的体现出他的缺点,IO密集型程序(线程,协程)体现的就不是那么的明显
python之父声明概要
想要移除GIL不是一件容易的事情,要想使用多任务,多使用进程呗
解决GIL的方法
1.换解释器
2.用其他的语言来实现该部分的功能,python是一种胶水性的语言,其可以调用其他语言写的程序
原文地址:https://www.cnblogs.com/117698ai/p/11456279.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- centos中文件与权限的基本操作教程
- 在Linux中使用tcpdump命令捕获与分析数据包详解
- easyswoole一键安装脚本及宝塔安装错误问题
- CentOS7系统增加swap的操作方法实例
- iOS逆向之OpenSSH登录iPhone
- linux中SUID,SGID与SBIT的奇妙用途详解
- 详解Linux文件操作知识点
- Linux中nohup与&的用法和区别详解
- Linux中有效地管理进程的8个命令
- Centos7 下安装python3及卸载的教程
- Linux使用VIM编辑器的方法
- Centos安装MYSQL8.X的教程
- Linux使用join -a1来合并两个文件
- ZFS是什么?使用ZFS的理由及特性介绍
- centos7.x 部署主、从DNS服务器问题