Python编程开发都有哪些限制

2020-9-29 9:52:42 | 点击29次

软件开发设计模式是软件开发程序员需要重点掌握的编程知识之一,而今天我们就一起来了解一下,Python编程开发都有哪些限制。

Python的GIL(Global Interpreter Lock,全局解释器锁)会阻止Python代码同时在多个处理器核心上运行。于是有人就误以为Python不支持多线程,或无法发挥多核硬件的优势。对于“计算密集型”(CPU-bound)程序来说,可以用multiprocessing模块实现并发,该模块不受GIL限制,可以完全利用每个核心。这样一来,处理速度就很容易提高了(大致同CPU的核心数成正比)。对于“I/O密集型”程序来说,我们既可以用multiprocessing模块来做,也可以用threading模块或concurrent.futures模块来做。实际上,使用threading模块来编写I/O密集型程序时,并不用担心由GIL所带来的开销,因为网络延迟的影响更大。

遗憾的是,在编写并发程序时,如果采用低级与中级方式,那么非常容易出错,任何编程语言都有这种问题。要想少出错,就不要使用“显式锁”(explicit lock),而是改用Python的queue及multiprocessing模块,这些模块提供了封装程度较高的“队列”(queue),此外,也可以改用concurrent.futures模块来做。4章会告诉大家如何用封装程度较高的并发技术来大幅提高程序性能。

某些程序员之所以使用C、C++或其他“编译型语言”(compiled language)来编程,是因为他们还有另外一个错误的想法,那就是Python程序运行得很慢。一般来说,Python确实要比编译型语言慢,但在目前的硬件上面,用Python语言所编写的绝大部分应用程序的运行速度都足够快。即便有时Python程序真的不够快,我们也可以一边享受用Python编程所带来的好处,一边想办法提升其运行速度。

如果要给某些长期运行的程序提速,那么可以使用PyPy这款Python解释器(网址是pypy.org)。这是一种“即时编译器”(just-in-time compiler),可以极大提升程序执行速度。另外一种优化执行效率的方式是调用运行速度与编译后的C程序相仿的代码,对于“计算密集型”程序来说,用这种代码改写后,其执行速度很容易变成原来的100倍。要想使Python程序运行得和C程序一样快,简单的办法就是调用那种底层以C语言来实现的Python模块。比方说,标准库里的array模块或三方numpy模块都能飞快地处理数组,并且很省内存(多维数组可以用numpy来处理)。除此之外,还可以使用标准库的cProfile模块来探查程序的瓶颈,并用Cython来写对速度要求很高的那部分代码。这种写法实际上就是一套“增强版Python语言”(enhanced Python):写好的程序可以编译成纯C,从而使运行速度提升到极致。

资讯来源:合肥达内软件有限公司

微信 扫一扫

python编程有哪些-Python编程开发都有哪些限制相关推荐

  1. python编程小学生学好吗-连小学生都在学的Python,究竟就业方向有哪些?

    我们知道,网络爬虫作为数据采集的利器,在大数据时代作为数据的源头,十分有用武之地.利用Python可以更快的提升对数据抓取的精准程度和速度,是数据分析师的福祉,通过网络爬虫,让BOSS再也不用担心你没 ...

  2. 潘石屹也要学编程了?Python之父:并非人人都需要了解计算机发生了什么

    大数据文摘出品 作者:曹培信 21世纪是编程的时代,几乎人类所做的一切,但凡跟互联网沾点边,都可能涉及到计算机编程,后台的程序跑出的结果通过大大小小的屏幕呈现在我们面前,人们已经觉得这是理所当然的. ...

  3. 为什么黑客都用python-黑客编程为什么首选Python语言?这里告诉你答案!

    原标题:黑客编程为什么首选Python语言?这里告诉你答案! 编程对于任何一个新手来说都不是一件容易的事情,特别是在中国基本以C语言作为启蒙语言的国家.python对于任何一个想学习的编程的人来说的确 ...

  4. python 人工智能编程_最适合人工智能开发的5种编程语言

    自从去年,AlphaGo打遍天下棋手无对手,人工智能的风头就一直无人能及.在刚刚过去的IT领袖峰会上,BAT三位大佬都看好人工智能的未来发展.今年年初,百度就做了一个大动作,在医疗方面押宝人工智能,所 ...

  5. 为什么劝小白不要学python_为什么建议小白学Python编程?老男孩Python全栈开发

    说起Python这么课程大家都是非常熟悉的,但是对于初学者来说,在学习之前都会关注这样一个问题?为什么要学习Python语言呢? 其实很简单,现在信息更新速度比较快,有面对大数据时代的到来,各行各业都 ...

  6. Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)

    全文目录 ==先导知识== 1 认识Python 1.1.1 Python的发展历程 1.1.2 Python语言的特点 2. Python解释器的安装与Python程序运行 1.2.1 安装Pyth ...

  7. 开启全民编程时代!Python小学生都要学的编程语言!

    如要问现在最流行与时髦的计算机编程语言是什么?毫无疑问,Python领衔主演,网络上一句"人生苦短,我用Python" 不知换走了多少程序员的真心! Python近些年随着大数据, ...

  8. Python 开发者的 10 大编程开发环境(IDE),第一款是我的最爱

    对于程序员来说,除了日常争论世界上最好的语言是哪一门以外,哪款 IDE 是最好的也是争议颇多,今天我们就来介绍 10 款最好的 Python 编程 IDE,总有一款适合你! 经典推荐 再见英文版,Py ...

  9. python是什么语言开发的-少儿编程有什么好处?儿童编程课程学习Python的4大原因...

    儿童编程Python是什么课程? Python是强制用一种面向对象的解释型计算机程序设计语言,它是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public Li ...

最新文章

  1. 零点起飞学mysql视频_零点起飞学MySQL
  2. 5获取http请求头_获取托管者发送http请求报文的解决方案
  3. caffe loss一直nan什么情况
  4. 微机原理与接口技术(第2版)考点
  5. Content Provider 基础 之URI
  6. mysql-查询二-分组与聚合
  7. TypeScript入门指南(译文)
  8. 简单java登录页面android_Android 之路 - RxJava2+Retrofit实现简单登陆
  9. ios 常见问题解决
  10. 5.微服务设计 --- 分解单块系统
  11. HTTP协议--请求与响应
  12. ThreadLocal源码学习
  13. 结对-人机对战象棋游戏-测试过程
  14. EayRadius 于 2013-7-19 进行体验度更新,增加用户体验度
  15. 【190115】VC++ AVI视频播放程序源代码
  16. 华文行楷字帖欣赏_毛笔行书欣赏,华文行楷在线转换,偏旁部首练字帖,
  17. 以推理游戏开始2007年吧!
  18. c语言程序输入自己班级学号,C语言中设计一个程序就是通过输入学号就能知道班级的程序...
  19. Ajax洗洁精的特性,洗涤剂中常用表面活性剂的特点
  20. 微信小程序----map组件实现检索【定位位置】周边的POI

热门文章

  1. idea教程--使用mave创建普通java项目
  2. HSmartWindowControl 之 摄像头实时显示( 使用 WPF )
  3. python数据分析及展示(一)
  4. BZOJ4008. [HNOI2015]亚瑟王 期望概率dp
  5. 更改windows2003最大连接数的方法
  6. 第三十九篇 Python异常处理
  7. Django模板系统
  8. php单元测试断言方法
  9. Hibernate简答题
  10. Hive数据仓库之快速入门