答案

Python并不支持真正意义上的多线程。Python中提供了多线程包,但是如果你想通过多线程提高代码的速度,使用多线程包并不是个好主意。Python中有一个被称为Global Interpreter Lock(GIL)的东西,它会确保任何时候你的多个线程中,只有一个被执行。线程的执行速度非常之快,会让你误以为线程是并行执行的,但是实际上都是轮流执行。经过GIL这一道关卡处理,会增加执行的开销。这意味着,如果你想提高代码的运行速度,使用threading包并不是一个很好的方法。

不过还是有很多理由促使我们使用threading包的。如果你想同时执行一些任务,而且不考虑效率问题,那么使用这个包是完全没问题的,而且也很方便。但是大部分情况下,并不是这么一回事,你会希望把多线程的部分外包给操作系统完成(通过开启多个进程),或者是某些调用你的Python代码的外部程序(例如Spark或Hadoop),又或者是你的Python代码调用的其他代码(例如,你可以在Python中调用C函数,用于处理开销较大的多线程工作)。

为什么提这个问题

因为GIL就是个混账东西(A-hole)。很多人花费大量的时间,试图寻找自己多线程代码中的瓶颈,直到他们明白GIL的存在。

本文首发于Python黑洞网,csdn同步跟新

python面试题之多线程好吗?列举一些让Python代码以并行方式运行的方法相关推荐

  1. 华为python面试题库_我收集了100道Python面试题,开源到了Github

    对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔.那么你了解过Python编程面试题吗?从Python基础到网页爬虫你是否能全方位Hold住?今天,机器之心为读者们 ...

  2. python面试题及答案-5个很好的Python面试题问题答案及分析

    本文的主要内容是向大家分享几个Python面试中的T题目,同时给出了答案并对其进行分析,具体如下. 本文的原文是5 Great Python Interview Questions,同时谢谢 @非乌龟 ...

  3. 头条python面试题_大意了,这几道Python面试题没有答对,Python面试题精选

    这类问题属于简单类问题 在使用 requests 前加入:requests.packages.urllib3.disable_warnings(). 为 requests 添加 verify=Fals ...

  4. 实战五十一:基于python机器学习深度学习实现股市评论情感分析 (完整代码+数据集可直接运行)

    结果展示: 情绪与股市 情绪与股市关系的研究由来已久,情绪是市场的一个重要影响因素已成为共识. 15年股灾时,亲历了一次交易灾难,眼见朋友的数千万在一周不到的时间内灰飞烟灭.那段时间市场的疯狂,让人深 ...

  5. 基于python机器学习深度学习实现股市评论情感分析 (完整代码+数据集可直接运行)

    结果展示: 情绪与股市 情绪与股市关系的研究由来已久,情绪是市场的一个重要影响因素已成为共识. 15年股灾时,亲历了一次交易灾难,眼见朋友的数千万在一周不到的时间内灰飞烟灭.那段时间市场的疯狂,让人深 ...

  6. 2018最新BAT python面试题

    Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def fun(a): a = 2 fun(a) print(a)  # 1 代码二: a ...

  7. cpython python 区别面试_python基础教程之千万不要错过这几道Python面试题

    第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...

  8. python面试题搜集

    1. Python面试题搜集(一) 2019 Python最新面试题及答案16道题吐血总结!50道Python面试题集锦(附答案) Python是目前编程领域最受欢迎的语言.在本文中,我将总结Pyth ...

  9. python用哪个版本比较好 2020_2020年最常见的Python面试题答案

    Python新手在谋求一份Python编程工作前,必须熟知Python的基础知识.编程网站DataFlair的技术团队分享了一份2020年最常见Python面试题合集,既有基本的Python面试题,也 ...

最新文章

  1. 机器学习十大算法之EM算法
  2. 面试:字符串拼接,什么时候用StringBuilder?
  3. 37.操作系统的信号量
  4. Visual C++ 中的重大更改
  5. android自定义push通知_android通过自定义toast实现悬浮通知效果的示例代码
  6. struts2,jsp,freemarker编程小技巧
  7. java 构造 statict_java学习:构造方法、static、final
  8. 云+X案例展 | 民生类:贝斯平云助力500强跨国企数字化转型
  9. 新建文本文档好玩的代码_(03)用什么工具写ASP源代码?
  10. ACM - ICPC World Finals 2013 A Self-Assembly
  11. 3dmax:3dmax三维VR渲染设置之高级灯光渲染(光度学—自由灯光、目标灯光、天空门户)图文教程之详细攻略
  12. OPNsense用户手册-用户界面
  13. cocosCreator关闭多点触摸的问题
  14. 对游戏编程开发的一点思考
  15. Sbo之于中国的使用现状分析
  16. 浅谈代理服务器的作用
  17. Excel时间做差,统计加班时长
  18. UC浏览器设置允许访问剪贴板网址的方法
  19. SAP FICO 应收应付重分类的坑 SAP S4 HANA
  20. Java周总结之面对对象

热门文章

  1. 全志t3linux驱动_全志A20GPIO驱动分析|Android驱动及系统开发交流区|研发交流|雨滴科技技术论坛 - Powered by Discuz!...
  2. (14) ZYNQ AXI4-Lite总线简介(学无止境)
  3. (82)介绍AXI4-Stream总线
  4. php声明js变量类型,js中变量是什么以及有哪些类型
  5. rxtx串口事件不触发_STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
  6. 本地笔记软件_到底哪个笔记软件适合你
  7. ictclas4j java_java使用ictclas4j分词时出现NullPointerException错误 寻高手帮忙
  8. ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin
  9. java manager.apk_java实现静默安装apk
  10. android input 点击事件失效,React Native:TextInput元素上的onContentSizeChange事件在Android上不起作用...