python面试题之多线程好吗?列举一些让Python代码以并行方式运行的方法
答案
Python并不支持真正意义上的多线程。Python中提供了多线程包,但是如果你想通过多线程提高代码的速度,使用多线程包并不是个好主意。Python中有一个被称为Global Interpreter Lock(GIL)的东西,它会确保任何时候你的多个线程中,只有一个被执行。线程的执行速度非常之快,会让你误以为线程是并行执行的,但是实际上都是轮流执行。经过GIL这一道关卡处理,会增加执行的开销。这意味着,如果你想提高代码的运行速度,使用threading
包并不是一个很好的方法。
不过还是有很多理由促使我们使用threading
包的。如果你想同时执行一些任务,而且不考虑效率问题,那么使用这个包是完全没问题的,而且也很方便。但是大部分情况下,并不是这么一回事,你会希望把多线程的部分外包给操作系统完成(通过开启多个进程),或者是某些调用你的Python代码的外部程序(例如Spark或Hadoop),又或者是你的Python代码调用的其他代码(例如,你可以在Python中调用C函数,用于处理开销较大的多线程工作)。
为什么提这个问题
因为GIL就是个混账东西(A-hole)。很多人花费大量的时间,试图寻找自己多线程代码中的瓶颈,直到他们明白GIL的存在。
本文首发于Python黑洞网,csdn同步跟新
python面试题之多线程好吗?列举一些让Python代码以并行方式运行的方法相关推荐
- 华为python面试题库_我收集了100道Python面试题,开源到了Github
对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔.那么你了解过Python编程面试题吗?从Python基础到网页爬虫你是否能全方位Hold住?今天,机器之心为读者们 ...
- python面试题及答案-5个很好的Python面试题问题答案及分析
本文的主要内容是向大家分享几个Python面试中的T题目,同时给出了答案并对其进行分析,具体如下. 本文的原文是5 Great Python Interview Questions,同时谢谢 @非乌龟 ...
- 头条python面试题_大意了,这几道Python面试题没有答对,Python面试题精选
这类问题属于简单类问题 在使用 requests 前加入:requests.packages.urllib3.disable_warnings(). 为 requests 添加 verify=Fals ...
- 实战五十一:基于python机器学习深度学习实现股市评论情感分析 (完整代码+数据集可直接运行)
结果展示: 情绪与股市 情绪与股市关系的研究由来已久,情绪是市场的一个重要影响因素已成为共识. 15年股灾时,亲历了一次交易灾难,眼见朋友的数千万在一周不到的时间内灰飞烟灭.那段时间市场的疯狂,让人深 ...
- 基于python机器学习深度学习实现股市评论情感分析 (完整代码+数据集可直接运行)
结果展示: 情绪与股市 情绪与股市关系的研究由来已久,情绪是市场的一个重要影响因素已成为共识. 15年股灾时,亲历了一次交易灾难,眼见朋友的数千万在一周不到的时间内灰飞烟灭.那段时间市场的疯狂,让人深 ...
- 2018最新BAT python面试题
Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def fun(a): a = 2 fun(a) print(a) # 1 代码二: a ...
- cpython python 区别面试_python基础教程之千万不要错过这几道Python面试题
第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...
- python面试题搜集
1. Python面试题搜集(一) 2019 Python最新面试题及答案16道题吐血总结!50道Python面试题集锦(附答案) Python是目前编程领域最受欢迎的语言.在本文中,我将总结Pyth ...
- python用哪个版本比较好 2020_2020年最常见的Python面试题答案
Python新手在谋求一份Python编程工作前,必须熟知Python的基础知识.编程网站DataFlair的技术团队分享了一份2020年最常见Python面试题合集,既有基本的Python面试题,也 ...
最新文章
- 机器学习十大算法之EM算法
- 面试:字符串拼接,什么时候用StringBuilder?
- 37.操作系统的信号量
- Visual C++ 中的重大更改
- android自定义push通知_android通过自定义toast实现悬浮通知效果的示例代码
- struts2,jsp,freemarker编程小技巧
- java 构造 statict_java学习:构造方法、static、final
- 云+X案例展 | 民生类:贝斯平云助力500强跨国企数字化转型
- 新建文本文档好玩的代码_(03)用什么工具写ASP源代码?
- ACM - ICPC World Finals 2013 A Self-Assembly
- 3dmax:3dmax三维VR渲染设置之高级灯光渲染(光度学—自由灯光、目标灯光、天空门户)图文教程之详细攻略
- OPNsense用户手册-用户界面
- cocosCreator关闭多点触摸的问题
- 对游戏编程开发的一点思考
- Sbo之于中国的使用现状分析
- 浅谈代理服务器的作用
- Excel时间做差,统计加班时长
- UC浏览器设置允许访问剪贴板网址的方法
- SAP FICO 应收应付重分类的坑 SAP S4 HANA
- Java周总结之面对对象
热门文章
- 全志t3linux驱动_全志A20GPIO驱动分析|Android驱动及系统开发交流区|研发交流|雨滴科技技术论坛 - Powered by Discuz!...
- (14) ZYNQ AXI4-Lite总线简介(学无止境)
- (82)介绍AXI4-Stream总线
- php声明js变量类型,js中变量是什么以及有哪些类型
- rxtx串口事件不触发_STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
- 本地笔记软件_到底哪个笔记软件适合你
- ictclas4j java_java使用ictclas4j分词时出现NullPointerException错误 寻高手帮忙
- ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin
- java manager.apk_java实现静默安装apk
- android input 点击事件失效,React Native:TextInput元素上的onContentSizeChange事件在Android上不起作用...