中企动力 > 头条 > python项目

网站性能检测评分

注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。

python项目

Python不能用于大型项目?关于Python的10大误解 企业视频课程

img

华行云

关注

语言多元化是PayPal编程文化中一个重要的组成部分。在C++和Java长期流行的同时,更多的团队选择了Jva和Scala。同时,Braintree的收购也引入了一个久经世故的Ruby社区。Python作为一门特别的语言,在eBay和PayPal有很长的历史。而且其流行程度依然有增不减。

eBay的开发者支持Python这个应用于基层领域多年的语言。甚至在eBay管理层官方支持Python以前,技术人员就开始使用Python。我在几年前加入PayPal并选择Python来写内部应用,然而,我却发现了PayPal中将近15年以前的Python代码。

目前,Python 支撑着 超过50个项目, 包括:

功能和产品型, 例如 eBay Now 和 RedLaser运营和基础设施型**, 从开放的 OpenStack 到专有设施中间层服务和应用型**, 例如 PayPal 用来设定价格以及检测用户可用功能的那个(服务/应用)监测代理和接口*型*, 用于涉及到部署和安全的一些用例批处理任务*型*, 例如数据导入,价格调整,及其它项目以及不计其数的开发者工具

在接下来的文章里我将详细介绍那些使得 eBay 和 PayPal 的 Python 生态系统从2011年的不超过25个工程师到2014年超过260个工程师所使用的技术和举措。对于本文,我则会专注于10个不得不予以揭露的关于 eBay 和 PayPal 的企业环境的谬误。

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

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

如果你对于长长的 Python 历史比较好奇,Python 的作者 Guido van Rossum 已经为你准备好整个故事。

谬误 #2: Python 没有被编译

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

一条在 PayPal 以及其它地方的通用原则就是,(应用的)安全性不能依赖于代码的已编译状态。更为重要的是加强运行时环境的安全,因为实质上每种语言都有一个解码器,或者能被拦截并导出受保护的状态。参考下一条谬误来了解更多的 Python 安全性问题。

谬误 #3: Python 不安全

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

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

这些诸多的原因,使得 Python 成为PayPal(和eBay)的应用程序安全团队在某些业务中最快的选择. 这里有把Python用在PayPal的安全第一环境中的几个以安全为基础应用程序:

创建安全代理,以促进密钥的轮换以并巩固加密实现同业界领先的 HSM 技术集成为缺乏兼容性的技术栈构建受TLS保护的封装代理为我们内部的互相认证计划生成键和证书开发主动的漏洞扫描器

另外,还有无数存在安全隐患的用Python构建,面向操作的系统, 诸如防火墙和连接管理. 未来,我们一定回去深入的整合PayPal Python的安全事项.

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

Python 确实可以用来编写脚本,并且因其简单的语法、跨平台并且无所不在于 Linux, Macs, 和其它Unix 机器而成为这个领域的领跑者之一。

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

电信基础设施 (Twilio)支付系统 (PayPal, Balanced Payments)神经科学和心理学 (许多, 许多, 例子)数值分析和工程 (numpy, numba, 以及 更多其它)动画(LucasArts, Disney, Dreamworks)游戏后台 (Eve Online, Second Life, Battlefield, 以及 其它很多)Email 基础设施 (Mailman, Mailgun)媒体存储和处理 (YouTube, Instagram, Dropbox)操作和系统管理 (Rackspace, OpenStack)自然语言处理(NLTK)机器学习和计算机版本 (scikit-learn, Orange, SimpleCV)安全性和渗透性测试 (很多很多 以及 eBay/PayPal大数据 (Disco, Hadoop support)如理 (Calendar Server, 它 驱动了 Apple iCal)搜索系统 (ITA, Ultraseek, 还有 Google)Internet 基础设施 (DNS) (BIND 10)

更别提网站和web服务了,那些都不在少数. 事实上,PayPal工程师看起来像是有兴趣致力于基于Python的web特性,比如 YouTube 和 Yelp. 如果对Python成功案例的更大清单感兴趣,那就看看官方的清单吧.

谬误 #5: Python 是弱类型的

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

而存在一个不争而有趣的事实是, Python 是比Java更加强类型的. Java 对于原生类型和对象区分了类型系统,它让null存在于一个灰色地带. 另一方面,现代的 Python 拥有一个统一的强类型系统, 其中什么都没有 的类型是明确指定的. 更进一步的,JVM自身也是动态类型的,因为可以把它的 根源 追溯到由Sun所收购的Smalltalk VM的一个实现。

Python的类型系统 很棒,但要提供给企业级使用,目前仍然还有许多更重大的事项需要关注。

谬误 #6: Python 速度慢

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

CPython是参考实现, 且也是广泛发布和使用的实现.Jython是Python用于JVM的是一个成熟的实现.IronPython是 Microsoft 针对其自家的通用语言运行时——又名 .NET,实现的Python .PyPy是一个正在日趋成熟的Python实现,拥有JIT编译,增量垃圾收集诸多先进的特性.每一个运行时都有其自己的性能特点, 而且他们本身也不慢. 这里更重要的地方在于不能错误地把一个性能指标分派到一门编程语言智商. 应该总是把该评估用在一个应用程序运行时上面,最好是针对一个特定的使用场景。

清楚了那些事项之后,下面就是一些有Python提供的小项,体现其重要的性能优势:

把 NumPy 用作 Intel 的 MKL SIMD接口PyPy的 JIT 编译能 达到比C还快的性能Disqus 能在同样的100个盒子上容纳两亿五千万到5亿用户

诚然,这些都不是最新的列子,只是我个人的最爱罢了. 这将很容易扯到高性能Python以及独立提供的运行时这些广阔的领域. 我们不应只是专注于解决单个特殊的案例, 而是应该把注意力放在对开发人员在 最终产品性能 方面的生产力的普遍影响上面, 特别是在一种企业级环境之下。

C++ vs Python,. 两种语言在同一个输出下的对比.

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

设计实现一个可以正确完成任务的软件,包括开发单独的测试测试性能,明确瓶颈优化,根据测试和Amdahl法则,并且利用Python与C的渊源

虽然这听起来很简单,但是即使是老道的工程师,这依旧是一个非常耗时的过程。Python设计之初就考虑到了这一套开发流程。根据我们的经验,通常C++和Java项目完成一次迭代流程的时间,够Python项目完成三次迭代流程。今天,PayPal和eBay中不乏有Python项目使用更少的代码战胜了同类C++和Java项目,这多亏了快速的开发使得仔

细的裁剪和优化变得可能。

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

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

成功的关是键简单性且一致性。CPython,Python的主要虚拟机,其最大限度地放大了这些特性,从而演变出了一个精确可测的运行时。人们很难发现 Python程序员关心垃圾的收集暂停或应用地启动时间。拥有强大的平台和网络支持,Python其本身自然而然的智能水平可扩展,BitTorrent就是其充分的体现。

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

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

除了偶尔叫嚣性能和规模化的问题,有人想提的技术些,”Python缺乏并发,”或者,”GIL怎么样?”如果几十个反例仍不足以支持Python水平及垂直拓展规模的能力,那么再更深地解释CPython实现细节也不会有帮助,所以我会简短些。

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

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

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

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

谬误 #9: Python 程序员很稀缺

事实上,现在使用 Python 的 web 开发者的确没有使用 PHP 或者 Java 的 web 开发者多。这可能主要是由于企业需求和教育之间的相互作用导致的,不过 教育领域(教学所使用的编程语言)的趋势使得情况可能产生变化 。

也就是说,使用 Python 的开发者并不稀缺。现在全世界有数百万使用 Python 的开发者。已有几十个Python 技术大会、 StackOverflow 上成千上万的 Python 内容问答、雇佣大量使用 Python 的开发者的大企业比如 YouTube 、 美国银行( Bank of American )和 LucasArts/Dreamworks 等等,这些都显而易见地证实了这一点。在 eBay 和 PayPal 我们一直保持拥有几百位使用 Python 的正式开发者,这是怎么做到的呢?

那么,当一个项目被创建时为什么它会被首推?对于孩子来,大学生和教授们来说,Python作为第一门程序设计语言是非常易于学习的。在eBay,仅仅需要一个星期,一个新的Python程序员就能展示一个真正的成果,并且他们开始散发光芒常常只要2-3个月,通过Internet的宝藏(互动式教程,书,文档和开源代码库)一切皆有可能。

另外一个重要的考虑因素是,项目使用Python会更简单,它不会像其他项目那样需要那么多的开发者。在谬误6和谬误9中提到的那样,在Python项目中,学习像Instagram那样的高效团队是一个常见的比喻,并且这确实是我们在eBay和PayPal的经验。

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

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

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

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

最后,应该指出的是,除了调度加速Myth #6以及#7中所提到的,使用Python的项目通常需要更少的开发者。我们常见的成功案例中,使用Java或C++的项目通常有3-5开发者耗时2-6个月,最终由单一的开发者在2-6周(或小时,因为这些原因)完成...

2017年最流行的十大Python库 推广视频课程

img

缺心

关注

年末是你需要思考过去一年的成就的时候。对于程序员来说,这通常是回顾今年发布的或者最近流行的开源库,因为它们是解决特定问题的绝佳工具。

在过去的两个多年中,我们都会在博客中选取我们认为在Python社区最有用的库。今年也是如此。

这一次,这份列表基本都是机器学习(ML)的库。请非ML库的作者而且能够谅解,这都怪我们的偏见。希望在读到本文的人能评论并提出一些被我们忽略的伟大的库帮助我们矫正它。

那么,让我们开始盘点吧!

1. Pipenv

链接:https://github/pypa/pipenv

我们为今年年初发布的这个工具排到榜首,它有能力影响每个Python开发者的工作流程,它已经成为Python管理依赖项的官方推荐工具。

https://packaging.python.org/tutorials/managing-dependencies/#installing-pipenv

Pipenv最初是由Kenneth Reitz创立的一个周末项目,旨在将其他包管理者(如npm或yarn)的创意带入Python中。不再去安装virtualenv,virtualenvwrapper,管理requirements.txt文件,并确保对依赖项的依赖版本的再现性(https://kennethreitz.org/essays/a-better-pip-workflow)。使用Pipenv,你可以在Pipfile中指定所有的依赖关系(通常使用命令添加,删除或更新依赖关系)。该工具可以生成一个Pipfile.lock文件,使你的构建deterministic,帮助你避免那些因为你不知道是否需要的模糊依赖产生的难以捕捉的bug。

当然,Pipenv还有很多其他的特性,并且它的文档非常好,所以一定要看一下,并且在你所有的Python项目中使用它,就像我们在Tryolabs中做的那样。

2. PyTorch

链接:http://pytorch.org/

说到今年流行,尤其是在深度学习(DL)社区流行的库,那就要提到今年Facebook推出的DL框架PyTorch。

PyTorch构建并改进了流行的Torch框架,与Lua不同它是基于Python的。由于最近几年人们大多转向使用Python进行数据科学研究,它是让DL更容易接近的重要一步。

最值得注意的是,PyTorch已经成为众多研究人员的首选框架之一,因为它实现了动态计算图(Dynamic Computational Graph)范式。当使用TensorFlow,CNTK或MXNet等其他框架编写代码时,必须首先定义计算图。该图指定了我们的代码运行的所有操作,这些操作稍后会被编译并可能被框架优化,以便能够在GPU上并行运行得更快。这个范式被称为静态计算图,因为你可以利用各种优化,而且这个图形一旦建成,就有可能运行在不同的设备上(因为执行与构建分离)。然而,在自然语言处理等许多任务中,工作的量通常是可变的:在将图像提供给算法之前,可以将图像调整为固定的分辨率,但不能对可变长度的句子进行相同的处理。这是PyTorch和动态图的亮点,通过在代码中使用标准的Python控制指令,图在执行时被定义,给了你很多这对于一些任务来说必不可少的自由。

当然,PyTorch也为你计算梯度(就像你期望从任何现代的DL框架中获得的那样),速度非常快,而且是可扩展的,所以为什么不试试呢?

3. caffe2

链接:https://caffe2.ai/

这可能听起来很疯狂,但Facebook今年也发布了另一个很棒的DL框架。

原来的Caffe框架已被大众使用多年,以无与伦比的性能和久经考验的代码库而闻名。然而,最近DL的趋势使这个框架在某些方面停滞不前。Caffe2是将Caffe带入“现代世界”的尝试。

它支持分布式训练,部署(即使在移动平台上),最新的CPU并且支持CUDA的硬件。虽然PyTorch可能更适合研究,但Caffe2适合在Facebook上看到的大规模部署。

另外,请看看近期的ONNX。你可以在PyTorch中构建和训练模型,同时使用Caffe2进行部署!

4. Pendulum

链接:https://github/sdispater/pendulum

去年,Arrow被列入榜单,它旨在通过使用Python的datetime让你生活轻松一些。而今年,我们轮到Pendulum了。

Pendulum的优点之一是它是Python标准datetime类嵌入式的替代品,因此可以轻松地将其与现有代码集成,并且只有在实际需要时才使用它的功能。者已经特别注意确保正确地处理时区,默认每个实例的timezone-aware和UTC。你也将得到一个扩展timedelta,使datetime算法更简单。

与其他现有的库不同,它努力使API具有可预测的行为,所以你知道会发生什么。如果你正在做任何与datetimes有关的重要工作,这会让你更快乐!(查看更多:https://pendulum.eustace.io/docs/)。

5. Dash

https://plot.ly/products/dash/

如果你正在做数据科学,你会使用Python生态系统中的优秀工具,比如Pandas和scikit-learn。并在工作流程使用Jupyter Notebooks,这对你和你的同事来说非常棒。但是,你如何与那些不知道如何使用这些工具的人分享这项工作呢?你如何建立一个界面,使人们可以轻松地使用数据,可视化过程?过去,你需要一个前端团队,用Javascript知识来构建这些GUI。但现在不用了。

今年宣布的Dash是一个用于构建Web应用程序的Python开源库,尤其是那些充分利用数据可视化的Web应用程序。它建立在Flask,Plotly.js和React的基础上,并提供了抽象,使你不必学习这些框架,更高效的研发。这些应用程序可以在浏览器中呈现并响应,因此在移动设备中也能使用。

了解更多关于Dash:https://plot.ly/dash/gallery

6.PyFlux

Python中有许多库用来做数据科学和ML,但是当你的数据点是随着时间的推移而变化的度量(例如股票价格,从仪表中获得的度量等等)时,这样的库就很少了。

PyFlux是一个专门为时间序列而开发的 Python开源库。时间序列研究是统计学和计量经济学的一个分支,目标可以描述时间序列的表现(依据隐藏组件或特征),也能预测时间序列未来的表现。

PyFlux允许用于时间序列建模的概率方法,并且已经实现了几个像GARCH这样的现代时间序列模型。

7.Fire

https://github/google/python-fire

通常情况下,你需要为自己的项目制作命令行界面(CLI)。除了传统的argparse,Python中还有click或docopt可用。谷歌今年宣布的Fire,在解决同样的问题上提出了不同的方法。

Fire是一个开源的库,可以为任何Python项目自动生成一个CLI。没错,是自动的:你几乎不需要编写任何代码或文档来构建你的CLI!想完成你的CLI,只需要调用一个Fire方法并把它传递给一个CLI:一个函数,一个对象,一个类,一个字典,甚至你可以不传递任何参数(这会将你的整个代码转换为一个CLI)。这个库可以为你节省很多时间。

8.imbalanced-learn

https://github/scikit-learn-contrib/imbalanced-learn

在一个完美世界的里,我们会有完美平衡的数据集,我们将它们都拿来将训练模型,多么美好。可惜现实世界不是这样的,某些任务更倾向于不平衡的数据。例如,在预测信用卡交易中的欺诈行为时,你会预测绝大多数交易(+ 99.9%)实际上是合法的。如果我们简单的训练ML算法会出现令人沮丧的性能,所以在处理这些类型的数据集时需要特别小心。

幸运的是,这是一个已经被研究过的问题,存在各种各样解决的技术。Imbalanced-learn是一个Python包,它提供了关于这些技术的实现。它与scikit-learn兼容,是scikit-learn-contrib项目的一部分。

9. FlashText

https://github/vi3k6i5/flashtext

如果您需要搜索某些文本并将其替换为其他内容(如大多数数据清理工作),则通常将其转为正则表达式。他们能很好地完成这项工作,但是有时会发生这样的情况:需要搜索的数以千计的内容,正则表达式可能会非常缓慢。

为此,FlashText是一个更好的选择。它使整个操作的运行时间大大提高了。FlashText的优点在于无论搜索条件有多少,运行时都是一样的,而正则表达式中运行时几乎是随着条件数呈线性增长。

FlashText证明了算法和数据结构设计的重要性,即使对于简单的问题,更好的算法也可以很容易地胜过最快的cpu运行简单的实现。

10. Luminoth

https://luminoth.ai/

现在,图像无处不在,理解它的内容对于许多应用程序来说至关重要。值得庆幸的是,由于DL的进步,图像处理技术已经进步了很多。

Luminoth是一个使用TensorFlow和Sonnet构建的用于计算机视觉的开源Python工具包。目前,它可以支持以Faster R-CNN模型的形式进行对象检测。

但是Luminoth不仅是一个特定模型的实现。它是被构建为模块化和可扩展,所以可以直接定制现有的部分或者将其扩展为新的模型来处理不同的问题,尽可能多地复用代码。它提供的工具可以轻松完成构建DL模型所需的工程工作:将数据(在本例中为图像)转换合适的格式输送到数据管道(TensorFlow的tfrecords)中,执行数据增强,在一个或多个gpu上运行训练(使用大型数据集时必须进行分布式培训),运行评估度量,轻松地在TensorBoard中可视化 并用简单的API或浏览器界面部署训练号的模型,以便人们使用。

此外,Luminoth直接与Google Cloud的ML Engine集成,所以即使你没有强大的GPU,也可以使用命令在云端进行训练。

本文为编译文章,转载请注明出处。

来源:atyun_com

来源网址:http://atyun/13563_2017最流行的十大python库.html

2018年最火的5大Python开源项目,总有适合你的! 公司视频课程

img

嵇凝安

关注

前几天看到一条新闻,说是高中生课程里面开设python课程了,这小孩子都来抢占市场了,这就是打了很多人的脸,特别是已经毕业很多年或者正在学校的人,小孩子都作为标准的教材来学习了,作为过来人还有什么理由说学不好。让自己做得多说的少最合适。

说到python现在处于风口期,相对来说入门也比较容易。在人工智能以及大数据分析上都具备很强的特性。

Python语言易学易学,高效开发。Python语言开发的开源项目非常活跃。下面是五个最活跃的Python开源项目。

1)排名第一,当然是关于机器学习谷歌开源项目tensorflow,TensorFlow是一个对数值计算的数据流图,对开源项目的统计,这个项目被宣布与一百万星和叉,被广泛应用于机器学习和深度神经网络研究。

2)第二个地方是python的新烧瓶。烧瓶是一个小型的Python Web开发框架。它是基于WSGI工具箱和jinja2模板引擎,它可以配置和开发Python网站最灵活快速的。

3。)第三的地方是在Python Web方向的经典Django,和Django Web框架,采用m-v-t设计模式。在Django,由于控制器接受用户输入部分由框架本身的处理,所以Django编程更侧重于模型(模型)、模板(模板)和视图(视图)。小编推荐一个学Python的学习裙【五八八,零九零,九四二】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有很多干货和技术分享使用Django,我们可以快速创建高质量、易维护、数据库驱动的Web服务程序,特别是与学生建立数据库的操作不是很熟悉,宝。

4)是Python的成熟,功能齐全的排在功能测试框架pytest pytest测试框架第四,可以帮助你更好的编写自动化测试程序,它可以适应全功能测试,集成测试复杂,从简单的单元测试,以及众多的支持插件开发。

5)在数据收集工具Scrapy排名第五,Scrapy是一个优秀的数据网络爬虫框架,用户只需要定制几个模块的开发可以实现完美的网络爬虫容易,使用它来抓取网页内容的数据和各种图像文件等非常方便;Scrapy还提供各种履带式基础的类型,如basespider和站点;Scrapy被广泛应用于数据挖掘、网络监控和自动测试等。

以上排名是基于代码提交和叉活动的排名,只反映了开源代码的流行,企业市场应用不热,注意差异,你必须根据自己的需要选择适合你的项目的python开源框架和工具。

不管你是怀着什么目的,求职加薪,或者是兴趣。首先你得准备吃苦的思想准备。学编程语言是枯燥的,得持之以恒。如果学python都是从入门到放弃,那么学其它东西会更难。

还需要有些自学能力,出现问题,自己尝试解决。多加练习,在练习和不断挫折中理解和掌握,熟能生巧。

不要急躁,真正能为你所用的技能,不是一朝一夕速成的。真正能被你吸收的养分,不是别人嚼烂了给你。你自己体会到的知识,才会被你吸收,在大脑里停留许久。

GitHub 上最火的 Python 开源项目 行业视频课程

img

梦迷离

关注

许多开发者都有定期浏览 GitHub 的习惯,对于 GitHub 上如此众多的项目,有人不断分享,有人不断 Mark。每个人浏览的时候,都会注意到 Star 的数量,它代表着这个项目的热度,今天,我们依照 Star 数,盘点 GitHub 上Python 语言中最火的 15 个开源项目,希望对你有帮助,排名如下:

1

机器学习系统 tensorflow

https://github/tensorflow/tensorflowStar 68481

Google 的 TensorFlow 是最流行的开源 AI 库之一。它的高计算效率,丰富的开发资源使它被企业和个人开发者广泛采用。TensorFlow 是一个采用数据流图,用于数值计算的开源软件库。TensorFlow 最初由Google 大脑小组(隶属于 Google 机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

2

oh-my-zsh

https://github/robbyrussell/oh-my-zshStar 58473

oh-my-zsh 是基于 zsh 的功能做了一个扩展,方便的插件管理、主题自定义,以及漂亮的自动完成效果。 Zsh 和 bash 一样,是一种 Unix shell,但大多数 Linux 发行版本都默认使用 bash shell。但 Zsh 有强大的自动补全参数、文件名、等功能和强大的自定义配置功能。

3

命令行 HTTP 工具包 httpie

https://github/jakubroztocil/httpieStar 31248

HTTPie 是一个命令行 HTTP 客户端,提供命令行交互方式来访问 HTTP 服务。其目标是使CLI 与 Web 服务的交互尽可能人性化。它提供了一个简单的 http 命令,允许使用简单自然的语法发送任意 HTTP 请求。

4

shell 命令行拓展 thefuck

https://github/nvbn/thefuckhttps://github/nvbn/thefuckStar 30532

首先这个项目的名字就很引人注目,取名为 thefuck 的原因是任何情况下你想说“我操”,你都可以用得到 thefuck。theFuck 是一个高可配置的应用,用户可以开启或关闭规则、配置 UI、设置规则选项还有进行其他的操作。Fuck 的 UI 很简单,它允许用户通过(上下)箭头的方式在修正过的命令列表中进行选择,使用 Enter 来确认选择,Ctrl+C 来跳出程序。 不足的是在 Python 标准库中没有办法在非 Windows 下不通过 curses 来读取键盘输入

5

微型 Python 框架 Flask

https://github/pallets/flaskStar 29399

Flask 是一个微型的 Python 开发的 Web 框架,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。 Flask 使用 BSD 授权。 Flask 也被称为“microframework”,因为它使用简单的核心,用 extension 增加其他功能。Flask 没有默认使用的数据库、窗体验证工具。然而,Flask 保留了扩增的弹性,可以用 Flask-extension 加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。

6

Python Web 框架 Django

https://github/django/djangoStar 27899

Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV 模式。使用 Django,我们在几分钟之内就可以创建高品质、易维护、数据库驱动的应用程序。

7

jQuery-File-Upload

https://github/blueimp/jQuery-File-UploadStar 27398

jQuery File Upload 是一个 jQuery 图片上传组件,支持多文件上传、取消、删除,上传前缩略图预览、列表显示图片大小,支持上传进度条显示;支持各种动态语言开发的服务器端。

8

Python 的 HTTP 客户端库 requests

https://github/requests/requestsStar 27210

requests 是 Python 的一个 HTTP 客户端库,跟 urllib,urllib2 类似,那为什么要用 requests 而不用 urllib2 呢?以为 Python 的标准库 urllib2 提供了大部分需要的 HTTP 功能,但是API太逆天了,一个简单的功能就需要一大堆代码。看了 requests 的文档,确实很简单,尤其适合懒人。

9

计算机系统配置管理器 ansible

https://github/ansible/ansibleStar 25132

Ansible 提供一种最简单的方式用于发布、管理和编排计算机系统的工具,你可在数分钟内搞定。Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用 SSH 进行远程连接。无需在被管理节点上安装附加软件,可使用各种编程语言进行扩展。

10

Web 爬虫框架 scrapy

https://github/scrapy/scrapyStar 22407

Scrapy 是 Python 开发的一个快速,高层次的屏幕抓取和 Web 抓取框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

Scrapy 吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如 BaseSpider、sitemap 爬虫等。

11

Python 的机器学习项目 scikit-learn

https://github/scikit-learn/scikit-learnStar 20908

scikit-learn 是一个 Python 的机器学习项目。是一个简单高效的数据挖掘和数据分析工具。基于 NumPy、SciPy 和 matplotlib 构建。基于 BSD 源许可证。scikit-learn 的基本功能主要被分为六个部分,分类,回归,聚类,数据降维,模型选择,数据预处理。

12

神经网络库 keras

https://github/fchollet/kerasStar 19132

Keras 是一个极简的、高度模块化的神经网络库,采用 Python(Python 2.7-3.5.)开发,能够运行在 TensorFlow 和 Theano 任一平台,好项目旨在完成深度学习的快速开发。keras 的几大特点:文档齐全、上手快速、纯 Python 编写、关注度高更新迅速、论坛活跃、就是运行速度不太快,当然,有的人就是不 care 速度。

13

Web 服务器 Tornado

https://github/tornadoweb/tornadoStar14178

Tornado 是使用 Python 开发的全栈式(full-stack)Web框架和异步网络库,最早由 Friendfeed 开发。通过使用非阻塞 IO,Tornado 可以处理数以万计的开放连接,是 long polling、WebSockets 和其他需要为用户维护长连接应用的理想选择。Tornado 跟其他主流的Web服务器框架(主要是 Python 框架)不同是采用 epoll 非阻塞 IO,响应快速,可处理数千并发连接,特别适用用于实时的 Web 服务。

14

Python 解释器 CPython

https://github/python/cpythonStar 12609

CPython 是用C语言实现的 Python 解释器,也是官方的并且是最广泛使用的Python解释器。除了 CPython 以外,还有用 JAVA 实现的 Jython 和用 .NET 实现的 IronPython,使 Python 方便地和 JAVA 程序、.NET 程序集成。另外还有一些实验性的 Python 解释器比如 PyPy。

CPython 是使用字节码的解释器,任何程序源代码在执行之前先要编译成字节码。它还有和几种其它语言(包括C语言)交互的外部函数接口。

工具包 CNTK

https://github/Microsoft/CNTKStar 12225

来自微软公司的 CNTK 工具包的效率,“比我们所见过的都要疯狂”。 这部分归功于 CNTK 可借助图形处理单元(GPU)的能力,微软自称是唯一公开“可扩展 GPU”功能的公司。(从单机上的 1 个、延伸至超算上的多个) 在与该公司的网络化 GPU 系统(称之为Azure GPU Lab)匹配之后,它将能够训练深度神经网络来识别语音,让 Cortana 虚拟助理的速度达到以前的十倍。 去年 4 月的时候,CNTK 就已经面向研究人员开放,只是当时的开源授权限制颇多。不过现在,它已经彻底开放了,而深度学习的初创者们将最为受益。

来自:开源中国

-end-

往期回顾:

iPhone8 下周出击,吓得我捂紧了我的肾!以后,在微信里管好自己的嘴,千万别妄议!

做CIO难!做不踩“坑”的CIO更难!

Gartner发布技术成熟曲线:“你刚被人工智能洗脑,最聪明的钱已转向这16项技术”

记一次惊心动魄的 DNS 缓存引发的惨案

发现·前沿 《海外风向标》 | 对话·精英 《CXO百脑汇》| 聚焦·行业 《早安,IDG》| 每周精彩内容,尽在e行网。

10大Python开源项目推荐 互联网视频课程

img

绮兰

关注

▌Rank 1:Requests-HTML v0.9(7385 stars on Github,来自Kenneth Reitz)

该库旨在尽可能简单直观地解析 HTML,仅支持 Python 3.6。

项目地址:https://github/kennethreitz/requests-html

▌Rank 2:PyTest v3.5(2453 stars on Github,来自Pytest-dev)

该项目是一个可扩展的 Python 框架,可以轻松编写小型测试,支持更复杂的功能测试。

项目地址:https://github/pytest-dev/pytest

▌Rank 3:Lector(327 stars on Github,来自BasioMeusPuga)

基于 Qt 的电子书阅读器

项目地址:https://github/BasioMeusPuga/Lector

▌Rank 4:Asciinema v2.0(5491 stars on Github,来自Asciinema)

Python 编写的终端会话录制器。

项目地址:https://github/asciinema/asciinema

▌Rank 5:Snips-nlu v0.13(1416 stars on Github,来自Snips)

Snips-nlu 是一个 Python 库,可以解析用自然语言编写的句子并提取结构化信息。

项目地址:https://github/snipsco/snips-nlu

▌Rank 6:Black(1665 stars on Github,来自ukasz Langa)

Python 代码格式化工具库。

项目地址:https://github/ambv/black

▌Rank 7:Instagram-terminal-news-feed(690 stars on Github,来自Bill Cheng)

Instagram Terminal Feed

项目地址:https://github/billcccheng/instagram-terminal-news-feed

▌Rank 8:Makesite(481 stars on Github,来自Sunaina Pai)

适合 Python 工程师的简单、轻量级静态网站/博客生成器。

项目地址:https://github/sunainapai/makesite

▌Rank 9:Twitter-scraper(832 stars on Github,来自Kenneth Reitz)

Python 写的 Twitter 爬虫工具,无 API 流速限制,非常高效,可轻松获取任何用户的推文。

项目地址:https://github/kennethreitz/twitter-scraper

▌Rank 10:Fast-Pandas(667 stars on Github,来自M. Mansour)

Pandas 是为数据科学家和开发人员提供的最灵活、最强大的工具之一。开发者可通过几种方式执行特定的任务。Fast-Pandas 旨在针对这些情况下的不同可用方法进行基准测试。此外,在 numpy 和 pandas 中都有专门的功能部分。

项目地址:https://github/mm-mansour/Fast-Pandas

原文地址:https://medium.mybridge.co/python-top-10-open-source-of-the-month-v-apr-2018-9e91343756a

2017年最流行的十大Python库 行业视频课程

img

we45

关注

年末是你需要思考过去一年的成就的时候。对于程序员来说,这通常是回顾今年发布的或者最近流行的开源库,因为它们是解决特定问题的绝佳工具。

在过去的两个多年中,我们都会在博客中选取我们认为在Python社区最有用的库。今年也是如此。

这一次,这份列表基本都是机器学习(ML)的库。请非ML库的作者而且能够谅解,这都怪我们的偏见。希望在读到本文的人能评论并提出一些被我们忽略的伟大的库帮助我们矫正它。

那么,让我们开始盘点吧!

1. Pipenv

链接:https://github/pypa/pipenv

我们为今年年初发布的这个工具排到榜首,它有能力影响每个Python开发者的工作流程,它已经成为Python管理依赖项的官方推荐工具。

https://packaging.python.org/tutorials/managing-dependencies/#installing-pipenv

Pipenv最初是由Kenneth Reitz创立的一个周末项目,旨在将其他包管理者(如npm或yarn)的创意带入Python中。不再去安装virtualenv,virtualenvwrapper,管理requirements.txt文件,并确保对依赖项的依赖版本的再现性(https://kennethreitz.org/essays/a-better-pip-workflow)。使用Pipenv,你可以在Pipfile中指定所有的依赖关系(通常使用命令添加,删除或更新依赖关系)。该工具可以生成一个Pipfile.lock文件,使你的构建deterministic,帮助你避免那些因为你不知道是否需要的模糊依赖产生的难以捕捉的bug。

当然,Pipenv还有很多其他的特性,并且它的文档非常好,所以一定要看一下,并且在你所有的Python项目中使用它,就像我们在Tryolabs中做的那样。

2. PyTorch

链接:http://pytorch.org/

说到今年流行,尤其是在深度学习(DL)社区流行的库,那就要提到今年Facebook推出的DL框架PyTorch。

PyTorch构建并改进了流行的Torch框架,与Lua不同它是基于Python的。由于最近几年人们大多转向使用Python进行数据科学研究,它是让DL更容易接近的重要一步。

最值得注意的是,PyTorch已经成为众多研究人员的首选框架之一,因为它实现了动态计算图(Dynamic Computational Graph)范式。当使用TensorFlow,CNTK或MXNet等其他框架编写代码时,必须首先定义计算图。该图指定了我们的代码运行的所有操作,这些操作稍后会被编译并可能被框架优化,以便能够在GPU上并行运行得更快。这个范式被称为静态计算图,因为你可以利用各种优化,而且这个图形一旦建成,就有可能运行在不同的设备上(因为执行与构建分离)。然而,在自然语言处理等许多任务中,工作的量通常是可变的:在将图像提供给算法之前,可以将图像调整为固定的分辨率,但不能对可变长度的句子进行相同的处理。这是PyTorch和动态图的亮点,通过在代码中使用标准的Python控制指令,图在执行时被定义,给了你很多这对于一些任务来说必不可少的自由。

当然,PyTorch也为你计算梯度(就像你期望从任何现代的DL框架中获得的那样),速度非常快,而且是可扩展的,所以为什么不试试呢?

3. caffe2

链接:https://caffe2.ai/

这可能听起来很疯狂,但Facebook今年也发布了另一个很棒的DL框架。

原来的Caffe框架已被大众使用多年,以无与伦比的性能和久经考验的代码库而闻名。然而,最近DL的趋势使这个框架在某些方面停滞不前。Caffe2是将Caffe带入“现代世界”的尝试。

它支持分布式训练,部署(即使在移动平台上),最新的CPU并且支持CUDA的硬件。虽然PyTorch可能更适合研究,但Caffe2适合在Facebook上看到的大规模部署。

另外,请看看近期的ONNX。你可以在PyTorch中构建和训练模型,同时使用Caffe2进行部署!

4. Pendulum

链接:https://github/sdispater/pendulum

去年,Arrow被列入榜单,它旨在通过使用Python的datetime让你生活轻松一些。而今年,我们轮到Pendulum了。

Pendulum的优点之一是它是Python标准datetime类嵌入式的替代品,因此可以轻松地将其与现有代码集成,并且只有在实际需要时才使用它的功能。者已经特别注意确保正确地处理时区,默认每个实例的timezone-aware和UTC。你也将得到一个扩展timedelta,使datetime算法更简单。

与其他现有的库不同,它努力使API具有可预测的行为,所以你知道会发生什么。如果你正在做任何与datetimes有关的重要工作,这会让你更快乐!(查看更多:https://pendulum.eustace.io/docs/)。

5. Dash

https://plot.ly/products/dash/

如果你正在做数据科学,你会使用Python生态系统中的优秀工具,比如Pandas和scikit-learn。并在工作流程使用Jupyter Notebooks,这对你和你的同事来说非常棒。但是,你如何与那些不知道如何使用这些工具的人分享这项工作呢?你如何建立一个界面,使人们可以轻松地使用数据,可视化过程?过去,你需要一个前端团队,用Javascript知识来构建这些GUI。但现在不用了。

今年宣布的Dash是一个用于构建Web应用程序的Python开源库,尤其是那些充分利用数据可视化的Web应用程序。它建立在Flask,Plotly.js和React的基础上,并提供了抽象,使你不必学习这些框架,更高效的研发。这些应用程序可以在浏览器中呈现并响应,因此在移动设备中也能使用。

了解更多关于Dash:https://plot.ly/dash/gallery

6.PyFlux

Python中有许多库用来做数据科学和ML,但是当你的数据点是随着时间的推移而变化的度量(例如股票价格,从仪表中获得的度量等等)时,这样的库就很少了。

PyFlux是一个专门为时间序列而开发的 Python开源库。时间序列研究是统计学和计量经济学的一个分支,目标可以描述时间序列的表现(依据隐藏组件或特征),也能预测时间序列未来的表现。

PyFlux允许用于时间序列建模的概率方法,并且已经实现了几个像GARCH这样的现代时间序列模型。

7.Fire

https://github/google/python-fire

通常情况下,你需要为自己的项目制作命令行界面(CLI)。除了传统的argparse,Python中还有click或docopt可用。谷歌今年宣布的Fire,在解决同样的问题上提出了不同的方法。

Fire是一个开源的库,可以为任何Python项目自动生成一个CLI。没错,是自动的:你几乎不需要编写任何代码或文档来构建你的CLI!想完成你的CLI,只需要调用一个Fire方法并把它传递给一个CLI:一个函数,一个对象,一个类,一个字典,甚至你可以不传递任何参数(这会将你的整个代码转换为一个CLI)。这个库可以为你节省很多时间。

8.imbalanced-learn

https://github/scikit-learn-contrib/imbalanced-learn

在一个完美世界的里,我们会有完美平衡的数据集,我们将它们都拿来将训练模型,多么美好。可惜现实世界不是这样的,某些任务更倾向于不平衡的数据。例如,在预测信用卡交易中的欺诈行为时,你会预测绝大多数交易(+ 99.9%)实际上是合法的。如果我们简单的训练ML算法会出现令人沮丧的性能,所以在处理这些类型的数据集时需要特别小心。

幸运的是,这是一个已经被研究过的问题,存在各种各样解决的技术。Imbalanced-learn是一个Python包,它提供了关于这些技术的实现。它与scikit-learn兼容,是scikit-learn-contrib项目的一部分。

9. FlashText

https://github/vi3k6i5/flashtext

如果您需要搜索某些文本并将其替换为其他内容(如大多数数据清理工作),则通常将其转为正则表达式。他们能很好地完成这项工作,但是有时会发生这样的情况:需要搜索的数以千计的内容,正则表达式可能会非常缓慢。

为此,FlashText是一个更好的选择。它使整个操作的运行时间大大提高了。FlashText的优点在于无论搜索条件有多少,运行时都是一样的,而正则表达式中运行时几乎是随着条件数呈线性增长。

FlashText证明了算法和数据结构设计的重要性,即使对于简单的问题,更好的算法也可以很容易地胜过最快的cpu运行简单的实现。

10. Luminoth

https://luminoth.ai/

现在,图像无处不在,理解它的内容对于许多应用程序来说至关重要。值得庆幸的是,由于DL的进步,图像处理技术已经进步了很多。

Luminoth是一个使用TensorFlow和Sonnet构建的用于计算机视觉的开源Python工具包。目前,它可以支持以Faster R-CNN模型的形式进行对象检测。

但是Luminoth不仅是一个特定模型的实现。它是被构建为模块化和可扩展,所以可以直接定制现有的部分或者将其扩展为新的模型来处理不同的问题,尽可能多地复用代码。它提供的工具可以轻松完成构建DL模型所需的工程工作:将数据(在本例中为图像)转换合适的格式输送到数据管道(TensorFlow的tfrecords)中,执行数据增强,在一个或多个gpu上运行训练(使用大型数据集时必须进行分布式培训),运行评估度量,轻松地在TensorBoard中可视化 并用简单的API或浏览器界面部署训练号的模型,以便人们使用。

此外,Luminoth直接与Google Cloud的ML Engine集成,所以即使你没有强大的GPU,也可以使用命令在云端进行训练。

本文为编译文章,转载请注明出处。

来源:atyun_com

来源网址:http://atyun/13563_2017最流行的十大python库.html

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP