使用pythran轻松加速python代码
fluidpythran的Python项目详细描述
概述
python+numpy+pythran是一个很好的组合,可以轻松高效地编写 科学计划和图书馆。
要使用pythran,需要在模块中隔离数值内核函数 是由pythran编译的。PythRon产生的C++代码从不使用 python解释器。这意味着只有在python中可行的部分才能 在pythran文件中完成。有些语言功能不是 由pythran(例如没有类)和大多数扩展支持 软件包不能在pythran文件中使用(基本上只有numpy和一些scipy文件 功能)。
python开发人员在使用pythran时感到沮丧的另一个原因是 与在注释中手动编写pythran函数签名相关,其中 无法自动化。pythran使用c++模板但pythran用户不能 用这个概念思考。我们希望能够表达模板 具有现代python语法的pythran的性质(特别是 类型 注释 )。
最后,另一个限制是不能使用pythran 及时编译,因此需要手动写入所有参数 类型:
使用fluidpythran,我们试图克服这些限制。fluidpythran提供 一些补充的pythran命令和一个小的python api来加速 使用pythran而不编写pythran模块的函数和方法。这个 数字内核的代码可以保存在模块和类中 它们是写的。pythran文件(即pythran编译的文件), 通常由用户编写,由 fluidpythran.
奖励:提前 和 及时编译!
在运行时,fluidpythran尽可能使用pythrasized函数,但是 让我们再次强调,使用fluidpythran的代码在没有pythran(of 当然没有加速)!
总之,一个快速发展高效科学 使用python的应用程序/库可以是:
- 使用现代的python编码,标准的numpy/scipy进行计算 你想要的酷库。
- 根据实际情况分析应用程序,检测瓶颈并应用 使用numpy进行标准优化。
- 添加几行fluidpythran来编译热点。
实现细节: 在引擎盖下,fluidpythran创建pythran文件 (AOT编译每个模块一个,JIT编译每个函数一个) 它可以在编译、导入或运行时编译,具体视情况而定。音符 如果需要,开发人员仍然可以读取pythran文件。
< div >Tip
fluidpythran对于测试和基准测试非常方便 pythran(例如,与julia的比较 以及使用numba比较numba与fluidpythran" rel="nofollow">