Python 10大谬论,你可能对Python存在的一些误解!

  • 时间:
  • 浏览:0
  • 来源:欢乐生肖APP下载_欢乐生肖APP官方

美国银行实际上有超过60 00的Python开发者,一八个 多多单独的项目超过一千万行Python代码。JP摩根也经历了例如 的转变。YouTube与非 数千的开发者和数百万行的代码。大规模产品和团队每天与非 使用Python,肯能它具有良好的模块化和封装特征,在特定方面一些的大规模开发建议是一致的。工具,强大的惯例以及代码审查促进了项目规模化管理的现实。

其实这听起来很简单,要是即使是老道的工程师,这依旧是一八个 多多非常耗时的过程。Python设计之初就考虑到了这俩 套开发流程。根据村里人 的经验,通常C++和Java项目完成一次迭代流程的时间,够Python项目完成三次迭代流程。今天,PayPal和eBay中不乏有Python项目使用更少的代码战胜了例如 C++和Java项目,这多亏了快速的开发使得仔细的裁剪和优化变得肯能。

谬误 #6: Python 数率慢

哪此诸多的意味,使得 Python 成为PayPal(和eBay)的应用进程池池安全团队在一些业务中最快的选用. 这里有把Python用在PayPal的安全第一环境中的几条以安全为基础应用进程池池:

另外,还与非 数所处安全隐患的用Python构建,面向操作的系统, 诸如防火墙和连接管理. 未来,村里人 一定回去深入的整合PayPal Python的安全事项.

轻量级 Python 的亲和力肯能使他看起来不为何会么会可怕,要是这里直觉很大程度上是受到了误导的. 安全的一八个 多多核心原则要是尽肯能让呈现的目标更小. 大系统是违背安全原则的,肯能村里人 趋向于 使行为过渡集中化, 要是也 让开发者难于理解. Python 通过倡导简洁化来边缘化哪此恶心的问题报告 报告 . 更有甚者, CPython 通过让此人 成为一八个 多多简单、稳定要是易于审核的虚拟机来使哪此问题报告 报告 得到处理. 事实上,近期 Coverity Software 的一八个 多多分析结果显示 CPython 得到了村里人 的最高质量评级.

IronPython是 Microsoft 针对其自家的通用语言运行时——叫雪 .NET,实现的Python .

安全性和渗透性测试 (所以所以 以及 eBay/PayPal

此外,规模化主要中有 测量和迭代。Python是以分析和优化为要义建立的。看Myth #6了解更多Python如何垂直拓展的细节。

谬误 #5: Python 是弱类型的

Myth #10: Python不适应于大项目

创建安全代理,以促进密钥的轮换以并巩固加密实现

设计实现一八个 多多可不用须正确完成任务的软件,包括开发单独的测试

谬误 #3: Python 不安全

成功的关是键简单性且一致性。CPython,Python的主要虚拟机,其最大限度地放大了哪此特征,从而演变出了一八个 多多精确可测的运行时。村里人 比较慢发现 Python进程池池员关心垃圾的挂接暂停或应用地启动时间。拥有强大的平台和网络支持,Python其有这俩自然而然的智能水平可扩展,BitTorrent要是其充分的体现。

给定足够的时间,一八个 多多循规蹈矩的开发者只会按照下面这俩 经过论证的土辦法 来编写精确高效的软件:

Python的类型系统 很棒,但要提供给企业级使用,目前仍然还有一些更重大的事项必须关注.

自然语言处理(NLTK)

同业界领先的 HSM 技术集成

媒体存储和处理 (YouTube, Instagram, Dropbox)

电信基础设施 (Twilio)

游戏后台 (Eve Online, Second Life, Battlefield, 以及 其它所以)

神经科学生和熟理学 (一些, 一些, 例子)

也却励志的话 ,使用 Python 的开发者无须稀缺。现在全世界有数百万使用 Python 的开发者。已有几八个Python 技术大会、 StackOverflow 上成千上万的 Python 内容问答、雇佣一定量使用 Python 的开发者的大企业比如 YouTube 、 美国银行( Bank of American )和 LucasArts/Dreamworks 等等,哪此都显而易见地证实了这俩 点。在 eBay 和 PayPal 村里人 老是保持拥有几百位使用 Python 的正式开发者,这是为何会么会做到的呢?

PyPy是一八个 多多正在日趋心智性成熟图片 是什么是什么期期 图片 图片 的Python实现,拥有JIT编译,增量垃圾挂接诸多先进的特征.

Python 其实可不用须用来编写脚本,要是因其简单的语法、跨平台要是无所沒有于 Linux, Macs, 和其它Unix 机器而成为这俩 领域的领跑者之一.

数值分析和工程 (numpy, numba, 以及 更多其它)

谬误 #2: Python 越来越被编译

动画(LucasArts, Disney, Dreamworks)

大规模有一些定义,但无论如何,YouTube是个大规模网站。每月UV超过十亿,每分钟上传的视频时长超过60 小时,占用互联网数率的20%,所有这俩 切都以Python作为核心技术。Dropbox,Disqus, Eventbrite, Reddit, Twilio, Instagram, Yelp, EVE Online, Second Life,,以及,是的,以及eBay和PayPal中有 无Python大规模的例子,哪此证明大规模不仅仅是肯能:它是有这俩模式。

开发主动的漏洞扫描器

Myth #8: Python缺少好的并发支持

有这俩干净的情况报告

谬误 #9: Python 进程池池员很稀缺

不像 C++ 一样必须一八个 多多独立的编译器工具链,Python 实际上被编译成了字节码,和 Java 肯能一些一些的编译型语言十分例如 。更进一步的编译过程,肯能有励志的话 , 取决于运行时环境, 不管是 CPython,PyPy,Jython/JVM,IronPython/CLR,或是其它的进程池池式虚拟机(process virtual machine)。参考 谬误 #6 来了解更多。

肯能你对于长长的 Python 历史比较好奇,Python 的作者 Guido van Rossum 肯能为你准备好整个故事了.

Myth #7: Python无法做到大规模

支付系统 (PayPal, Balanced Payments)

除了偶尔叫嚣性能和规模化的问题报告 报告 ,村里人 想提的技术些,”Python缺陷并发,”肯能,”GIL为何会么会样?”肯能几八个反例仍缺陷以支持Python水平及垂直拓展规模的能力,越来越再更深地解释CPython实现细节要是用有帮助,所以我会简短些。

为缺陷兼容性的技术栈构建受TLS保护的封装代理

在PayPal中,一八个 多多典型服务的部署必须多台机器,多个进程池池,多个进程池,以及一八个 多多数字非常庞大的greenlets,大约 一八个 多多非常强大可扩展的并行环境(见下图)。在大多数的企业环境中,团队更倾向于往更高层次过度,谨慎并注重灾难恢复。然而,在一些情况报告下,每台机器每天Python服务仍然处理数以百万计的请求,要是轻松处理。



一八个 多多基于单一worker的协同异步架构草图。最外层的盒子是进程池池,下一八个 多多层次为进程池,这里哪此进程池与非 轻进程池。操作系统处理进程池间的抢占,而I/O异步协同合作。

大数据 (Disco, Hadoop support)

全局解释器锁,或称GIL,是Python在大多数应用场景下的性能优化,也是几乎所有CPython实现代码的开发上的基础优化。GIL使得Python可不用须很便利地使用操作系统的进程池或轻进程池(通常指greenlets),且不影响使用进程池池池。更多相关信息,请看该主题的Q&A列表,以及Python文档中的介绍。

Python 还拥有一系列可扩展的开源、产业标准化的安全库序列. 在PayPal, 村里人 把安全和授信看做是重中之重, 村里人 发现 hashlib, PyCrypto, 以及 OpenSSL, 通过 PyOpenSSL 和村里人 此人 的定制构建的结合,中有 了 PayPal 简化的安全和性能需求.

每一八个 多多运行时与非 其此人 的性能特点, 要是村里人 有这俩要是慢. 这里更重要的地方在于必须错误地把一八个 多多性能指标挂接到一门编程语言智商. 应该老是把该评估用在一八个 多多应用进程池池运行时里面,最好是针对一八个 多多特定的使用场景.

Email 基础设施 (Mailman, Mailgun)

搜索系统 (ITA, Ultraseek, 还有 Google)

PyPy的 JIT 编译能 达到比C还快的性能

操作和系统管理 (Rackspace, OpenStack)

首先是有一八个 多多重要区别: Python 是一门编程语言,而与非 运行时环境. Python 拥有几条实现:

把 NumPy 用作 Intel 的 MKL SIMD接口

测试性能,明确瓶颈

越来越,当一八个 多多项目被创建时为哪此它会被首推?对于孩子来,大学生和教授们来说,Python作为第一门进程池池设计语言是非常易于学习的。在eBay,仅仅必须一八个 多多星期,一八个 多多新的Python进程池池员就能展示一八个 多多真正的成果,要是村里人 日后日后开始散发光芒常常想想要2-八个月,通过Internet的宝藏(互动式教程,书,文档和开源代码库)一切皆有肯能。

为村里人 内部管理的互相认证计划生成键和证书

机器学习和计算机版本 (scikit-learn, Orange, SimpleCV)

如理 (Calendar Server, 它 驱动了 Apple iCal)

Disqus 能在同样的60 个盒子上容纳两亿五千万到5亿用户

最后,应该指出的是,除了调度加速Myth #6以及#7中所提到的,使用Python的项目通常必须更少的开发者。村里人 常见的成功案例中,使用Java或C++的项目通常有3-5开发者耗时2-6个月,最终由单一的开发者在2-6周(或小时,肯能哪此意味)完成项目。

而所处一八个 多多不争而有趣的事实是, Python 是比Java更加强类型的. Java 对于原生类型和对象区分了类型系统,它让null所处于一八个 多多灰色地带. 此人 面,现代的 Python 拥有一八个 多多统一的强类型系统, 其中哪此都越来越(None) 的类型是明确指定的. 更进一步的,JVM自身也是动态类型的,肯能可不用须把它的 根源 追溯到由Sun所收购的Smalltalk VM的一八个 多多实现.

清楚了哪此事项想要,下面要是一些有Python提供的小项,体现其重要的性能优势:

伴随着所有的初创公司正在使用它以及孩子们最近也在学习它的事实,这俩 谬误为何会么会会仍然所处是可不用须理解的。实际上 Python 肯能 超过23岁了, 它最初发布于1991年, 早于 HTTP 1.0协议 5年且早于 Java 4年. 目前比较有著名的很早就使用 Python 的例子是在1996年: Google 的第一八个 多多成功的网络爬虫.

Python拥有强大的并发原语,包括generators, greenlets, Deferreds, 和futures.。Python有优秀的并发框架,包括eventlet, gevent,和Twisted。Python在定制运行时尚投入了惊人的工作量,包括Stackless和 PyPy。所有烦人哪此和更多表明,根本不存工程师们在Python并发编程方面的缺憾。一起,所有哪此都正在被正式的在企业生产环境中支持或使用。例如 ,请参考Myth #7。

优化,根据测试和Amdahl法则,要是利用Python与C的渊源

哪此谬误肯能要是消遣。讨论哪此谬误仍然很活跃的和受启发的,包括内部管理和内部管理, 肯能隐含在每一八个 多多谬误里的与非 一八个 多多Python的优势的认识。 要是, 记住哪此看似乏味的表现和麻烦的问题报告 报告 是稳步成长的表露, 并稳定地增长兴趣促进教育和持续地工作。 在这里,希望能扑灭一场充满火焰的战争,要是使得能真正去谈论工作与Python的实现。

原文发布时间为:2018-12-12

本文作者:机器学习算法与Python学习

本文来自云栖社区合作伙伴“机器学习算法与Python学习”,了解相关信息可不用须关注“guodongwei1991”微信公众号

Internet 基础设施 (DNS) (BIND 10)

Python 类型系统的特点是拥有强大、灵活的类型操作. 维基百科上对此作出的阐述.

谬误 #4: Python 是一门脚本语言

CPython是参考实现, 且也是广泛发布和使用的实现.

Jython是Python用于JVM的是一八个 多多心智性成熟图片 是什么是什么期期 图片 图片 的实现.

一条在 PayPal 以及其它地方的通用原则要是,(应用的)安全性必须依赖于代码的已编译情况报告。更为重要的是加强运行时环境的安全,肯能实质上累积语言与非 一八个 多多解码器,肯可不用须被拦截并导出受保护的情况报告。参考下一条谬误来了解更多的 Python 安全性问题报告 报告 。

幸运的是,Python发展于里面所提到的好的奠基。村里人 在检查执行使用pyflakes以及一些工具进行Python代码的静态分析,正如坚持PEP8——Python语言的基础风格指南。

诚然,哪此与非 是最新的列子,要是我此人 的最爱罢了. 这将很容易扯到高性能Python以及独立提供的运行时哪此广阔的领域. 村里人 不应要是专注于处理单个特殊的案例, 要是应该把注意力倒进对开发人员在 最终产品性能 方面的生产力的普遍影响里面, 怪怪的是在有这俩企业级环境之下.



C++ vs Python,. 有这俩语言在同一八个 多多输出下的对比.

谬误 #1: Python 是一门新语言

事实上, Python 肯能是常规用途编程语言中最灵活的技术. 以下是一些实例:

更别提网站和web服务了,哪此与非 在少数. 事实上,PayPal工程师看起来像是有兴趣致力于基于Python的web特征,比如 YouTube 和 Yelp. 肯能对Python成功案例的更大清单感兴趣,那看一遍看官方的清单吧.

事实上,现在使用 Python 的 web 开发者的确越来越使用 PHP 肯能 Java 的 web 开发者多。这肯能主要是肯能企业需求和教育之间的相互作用意味的,不过 教育领域(教学所使用的编程语言)的趋势使得情况报告肯能产生变化 。

怪怪的像奇迹,但却是现代发展的事实,但其往往出自一八个 多多竞争激烈的行业。

另外一八个 多多重要的考虑因素是,项目使用Python会更简单,它不用像一些项目那样必须越来越多的开发者。在谬误6和谬误9中提到的那样,在Python项目中,学习像Instagram那样的高效团队是一八个 多多常见的借喻,要是这其实是村里人 在eBay和PayPal的经验。

Myth #7 讨论了大规模运行Python的项目,但开发Python大规模项目是哪此情况报告呢?正如在Myth #9中提到的,大多数Python不被人看好。 然而Instagram在其被亿元美金收购当天达到千万的点击量,而整个公司必须十几此人 。Dropbox在2011年必须70个工程师,一些团队更少。所以,Python适合大规模团队吗?