一个纯python库,用于使用numba进行基准测试的可伸缩数字

fastats的Python项目详细描述


#快速
[![构建状态](https://travis-ci.org/fastats/fastats.svg?branch=master)(https://travis ci.org/fastats/fastats)
[![生成状态(Windows)](https://ci.appveyor.com/api/projects/status/9ufvyclit358sfb8/branch/master?svg=true)(https://ci.appveyor.com/project/pawroman/fastats/branch/master)
[![codecov](https://codecov.io/gh/fastats/fastats/branch/master/graph/badge.svg)(https://codecov.io/gh/fastats/fastats)
[![科达西徽章](https://api.codacy.com/project/badge/grade/2199521147834D58B9F0E8E155C97309)(https://www.codacy.com/app/dave.willmer/fastats?utm_source=github.com&;utm_medium=referral&;utm_content=fastats/fastats&;utm_campaign=badge_grade)
[![许可证](https://img.shields.io/badge/license mit blue.svg)(https://opensource.org/licenses/mit)

一个纯python库,用于基准化、可伸缩的数字,使用[numba]构建(https://numba.pydata.org/)。

[fastats邮件列表](https://groups.google.com/forum/!!论坛/快速学习)


--


数据越来越大,越来越复杂,代码很难扩展到这些级别。代码越来越大,越来越复杂,开发人员很难扩展到这些级别。

更容易调试。

``fastats`(即fast stats)试图通过在公共函数中使用线性代数进行性能优化,使用[numba](https://numba.pydata.org/)
从[anaconda](https://www.anaconda.com/)jit编译优化的python code到
矢量化的本机代码,而在纯python模式下运行进行调试则很简单。

对于单调函数,我们可以使用newton-raphson解算器来查找根:

`` python
从fastats导入newton-raphson

def my-raphson(x):
返回x**3-x-1

result=newton-raphson(0.025,1e-6,root=my-func)
````

这使用[numba](https://numba.pydata.org/)在后台jit将python代码编译为本地代码,并在需要时使用fastats转换调用"my_func"。

但是,我们通常希望使用fast函数并将其应用于大型数据集,因此"fastats"允许您将优化的函数作为调用返回table:

`` python
newton opt=newton raphson(0.025,1e-6,root=my_func,return_callable=true)


result=newton opt(0.03,1e-6)
````

.03,1e-6)
785 ns±8.2 ns/循环(7次运行的平均值±标准偏差,每次运行1000000个循环)
````

ewton(my_func,x0=0.03,tol=1e-6)
25.6μs±954ns/圈(平均值±标准偏差,7次,每次10000圈)
````





python/lua/ruby等大多数高级语言都有一个正式的c-api,它允许我们轻松地"下拉"到本机代码(如上面所示的scipy)。然而,这不仅费时、容易出错而且让许多开发人员感到不快,而且从上面的例子中可以看出,专门的C扩展不会自动扩展到更大的数据。

通过使用[numba](https://numba.pydata.org/)来JIT编译整个函数输入输出n降到本机代码,我们可以快速地扩展到更大的数据大小,而不必离开python的简单性。



秘密在于处理函数参数。

这对于专业图书馆来说很有效,但是在这个"大"数据的世界里,下一步通常是"现在我想将这个函数应用到这个1000万个项目的数组中"。这就是c扩展/本机库技术的失败之处。

c扩展到高级语言必然受到定义的api的限制,即,您可以编写一个c函数来获取3个浮点或3个浮点数组,但处理任意输入是非常困难的。

``fastats``允许您将函数作为参数传递到``numba``中,从而抽象出特定的循环或并发结构,从而加快、更干净的开发时间和更快的执行时间。

python>;=仅限3.5。强烈建议使用python 3.6或更新版本。

/>有关测试要求,请查看[.travis.yml](.travis.yml)或[.appveyor.yml](.appveyor.yml)。

####发起人

<;img src="http://pico-software.com/images/picosoftware.png"width="300"alt="pico software"title="pico software"/>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaSpring重定向请求处理程序   SwingJava:拆分字符串并将其放入文本区域的   Java:标记“”上出现语法错误,此标记后面应为表达式   web服务Java RestService从日志文件写入和读取数据   java如何将ArrayList<String>转换为char数组,然后向后打印每个单词?   java SimpleDataFormat解析返回年终日期   加密Java aes解密bytebuffer,包括填充为空字节   java有没有办法从特定的if语句调用变量?   java从更新返回到渲染   spring GRPC Java登录测试   java为什么下面的代码不工作(StringBuffer.toString!=null)   java是一种可行的模式吗?   使用Spring集成测试的JavaOSGi片段   java jCommander为未知和未使用的值引发异常?   在imageView的editText中输入的java图像URL