问题标签 [pythran]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
175 浏览

python - 以元组为键的 Pythran 导出字典

我尝试在需要数组的函数中使用Pythranint ,而对于第二个 arg a dict,其元组为intsas 键和intas 值:

通知Pythran的正确方法是什么dict?:

使用(int, int):int dict我得到这个错误:

0 投票
1 回答
158 浏览

python - 使用 PythranExtension 在 python 包中导入 pythran 模块

我尝试使用优秀的pythran制作一个 python 包。

有了这个文件结构

我的 pythran 东西在 ccompile.py 中:

setup.py 调用PythranExtension

一切正常python setup.py install编译 ccompile.py 并安装.so在 egg 文件夹的根目录下::

问题是我必须手动 mv ccompile.* from site-packages/proj-0.42-py2.7-linux-x86_64.egg/to site-packages/proj-0.42-py2.7-linux-x86_64.egg/proj/才能从 proj 包中导入 pythran 函数::

如果我使用 distutils 扩展中的语法(参见 https://docs.python.org/2/distutils/examples.html#single-extension-module),例如ext_modules=[PythranExtension("proj.ccompile", ["proj/ccompile.py"])], 在 setup.py 中(在 proj 中移动 ccompile)我得到一个错误当pythran编译它时:

和::

我得到::

0 投票
1 回答
230 浏览

python - 在 pythran 中使用日期时间

我正在使用pythran,这是一个 Python 到 c++ 编译器http://pythran.readthedocs.io/

我们可以使用 datetime 或任何其他方式在 pythran 函数中使用日期或时间信息吗?:

我得到:

0 投票
1 回答
768 浏览

python - pythran - 文件格式无法识别和未知的 MS 编译器版本 1800

我是 pythran 的新手,现在遇到文件格式无法识别的问题,如下所示:

我的操作系统是 Win 10 64 位。Pythran 的版本是 0.7.4.post1。我使用的python是anaconda 2:

因为我第一次尝试 Cython,所以我先安装了 Visual Studio 2008 SP1 和 Windows SKD for VC 2008。然后我为 gcc 编译器(gcc 版本 4.93)安装了 MinGW,并按照这个答案使用 gcc 编译器。这是我第一次遇到这个问题文件格式无法识别

然后我卸载 pythran 并使用以下命令重新安装它:

我得到了这个:failed to create process

我还尝试从 pypi 的源代码安装 pythran 并使用: python setup.py install. 它没有用。

此外,我无法从 conda 安装 pythran,这给了我以下消息:

最后,我还尝试用另一个 python27.dll 替换它,它是从 \MySQL\MySQL Workbench 6.3 CE 复制的。这种无法识别的文件格式消失了,但 pythran 仍然无法正常工作。我的意思是“pythran 不起作用”

感谢@cdarke 的评论,看来我应该转向编译器的问题。我不得不承认,当我发布这个问题时,我忽略了这个错误。我遗漏了这个问题的原因是,当我替换 anaconda2 中的 python27.dll 时,anaconda 中的 iPython notebook 无法工作(当我启动它时,弹出一个 cmd 窗口并很快消失,我无法捕捉到错误)

所以我的问题是:

  1. 哪里可以找到合适的python27.dll来解决文件格式无法识别的问题,而不会损坏iPython笔记本功能。(或如何在 iPython 笔记本开始时保留错误)

  2. 解决未知 MS 编译器版本 1800 的提示。(我现在正试图弄清楚如何解决编译器问题,但我是 MS 编译器的新手。所以任何提示将不胜感激!)

非常感谢您!

0 投票
0 回答
374 浏览

regex - 在 Python 文件中查找函数定义的正则表达式

我有一个带有以 CamelCase 样式编写的函数定义的 python 项目。我正在尝试编写一个脚本将它们转换为snake_case 样式。

CaseFormatter 类

测试 CaseFormatter 类

我在这里找到了 RegEx 来查找函数定义。当我在我的项目上尝试它时,它没有给我任何结果,RegEx 并没有像我想的那样工作。作为项目中文件之一的示例:

0 投票
1 回答
915 浏览

python - 使用从 Cython 中的方法创建的 PyCapsule 的错误结果

我们需要从 Cython 中的一个类的方法创建一个 PyCapsule。我们设法编写了一个可以编译甚至运行没有错误的代码,但结果是错误的。

一个简单的例子在这里:https ://github.com/paugier/cython_capi/tree/master/using_cpython_pycapsule_class

胶囊由 Pythran 执行(需要使用 github 上的版本https://github.com/serge-sans-paille/pythran)。

.pyx 文件:

pythran ( call_capsule_pythran.py) 编译的文件。

再一次,它是 Pythran 的一项新功能,因此需要 github 上的版本...

和测试文件:

它是越野车并给出:

它表明它适用于标准函数和静态函数,但方法存在问题。

请注意,它适用于两个胶囊的事实似乎表明问题并非来自 Pythran。

编辑

在 DavidW 的评论之后,我了解到我们必须在运行时(例如在 中get_capi)创建一个 C 函数,其签名int(int)来自绑定方法twice_cdef的签名,其签名实际上是int(Twice, int).

我不知道这是否真的不可能与 Cython 做...

0 投票
1 回答
190 浏览

numpy - 如何用pythran调用fft

我正在使用 pythran 将我的 python+numpy 代码转换为 C++,到目前为止,一切都非常有效,生成的代码非常有效。但是,我的代码需要使用 numpy.ffr.rfft 和 irfft(快速傅里叶变换),pythran 显然不支持:

我怎么可能做到这一点?如果我从 python 代码中调用快速傅立叶变换的 C 实现(我知道这可以做到),pythran 会使用它还是会抱怨它?

编辑:我将一个简单的 C 函数编译成一个 so 模块,然后我可以从我的 python 代码中调用它。当从 python 调用时,所有这些都可以正常工作,但是 pythran 在导入时不起作用:

所以看起来 pythran 不适用于已编译的 .so 文件。

0 投票
1 回答
445 浏览

julia - 如何在 Julia 中加速多个广播

这个 Julia 函数似乎效率很低(即使在 Julia 预热之后,也比等效的 Pythran / C++ 代码慢了一个数量级)......

我想只是我写得不正确......如何在 Julia 中加速这种“多广播”?我想/希望我不需要花费循环......

在第一个答案后编辑

谢谢!使用我的设置,Pythran 解决方案(就地和不就地)仍然快 1.5 到 2 倍(没有 OpenMP)。有没有办法在 Julia 中激活 SIMD 指令?或者另一种加速此类 CPU 计算的方法?

Python代码:

@simd建议后编辑

似乎这@simd不是开箱即用的,即只需在行首添加它。

我想必须扩展 for 循环,但是代码 (i) 变得不那么可读并且 (ii) 不再独立于维度。

似乎我们有一个案例,使用 Pythran 可以比使用 Julia 更快地加速简单的 Python/Numpy 代码(除非有办法在 Julia 中加速?并且未来的 Julia 版本可能会解决这个问题)。有趣的...

0 投票
1 回答
1465 浏览

python - 将数组排序到索引数组指定的箱中的最有效方法?

任务举例:

预期结果:

约束:

  • 应该很快。

  • 应该是O(n+k)其中 n 是数据的长度,k 是 bin 的数量。

  • 应该是稳定的,即保持箱内的顺序。

明显的解决方案

O(n log n)

O(n+k)解决方案

是循环和缓慢的。

numpy纯< scipy< pandas< numba/有没有更好的方法pythran

0 投票
1 回答
438 浏览

python - 是否有可能/如何获取在 python 上运行 pythran 生成的 c++ 代码

Pythran 是 Python 到 C++ 的编译器,适用于包含部分 numpy 支持的 Python 子集。它的行为有点像 Numba 和 Cython——你注释一个函数的参数,然后它接管进一步的类型注释和代码专业化。它利用了向量化的可能性和基于 OpenMP 的并行化的可能性。

在一些示例中,我展示了如何从 python 内部使用它来优化它,但我想知道是否可以使用它来将 python 代码转换为 c++ ......

它可以这样做吗?如果我要使用的功能依赖于另一个功能怎么办?如果其他功能是从单独的模块中导入的呢?是否有此类过程的示例/教程?