问题标签 [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.
python - 以元组为键的 Pythran 导出字典
我尝试在需要数组的函数中使用Pythranint
,而对于第二个 arg a dict
,其元组为ints
as 键和int
as 值:
通知Pythran的正确方法是什么dict
?:
使用(int, int):int dict我得到这个错误:
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编译它时:
和::
我得到::
python - 在 pythran 中使用日期时间
我正在使用pythran,这是一个 Python 到 c++ 编译器http://pythran.readthedocs.io/
我们可以使用 datetime 或任何其他方式在 pythran 函数中使用日期或时间信息吗?:
我得到:
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 窗口并很快消失,我无法捕捉到错误)
所以我的问题是:
哪里可以找到合适的python27.dll来解决文件格式无法识别的问题,而不会损坏iPython笔记本功能。(或如何在 iPython 笔记本开始时保留错误)
解决未知 MS 编译器版本 1800 的提示。(我现在正试图弄清楚如何解决编译器问题,但我是 MS 编译器的新手。所以任何提示将不胜感激!)
非常感谢您!
regex - 在 Python 文件中查找函数定义的正则表达式
我有一个带有以 CamelCase 样式编写的函数定义的 python 项目。我正在尝试编写一个脚本将它们转换为snake_case 样式。
CaseFormatter 类
测试 CaseFormatter 类
我在这里找到了 RegEx 来查找函数定义。当我在我的项目上尝试它时,它没有给我任何结果,RegEx 并没有像我想的那样工作。作为项目中文件之一的示例:
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 做...
numpy - 如何用pythran调用fft
我正在使用 pythran 将我的 python+numpy 代码转换为 C++,到目前为止,一切都非常有效,生成的代码非常有效。但是,我的代码需要使用 numpy.ffr.rfft 和 irfft(快速傅里叶变换),pythran 显然不支持:
我怎么可能做到这一点?如果我从 python 代码中调用快速傅立叶变换的 C 实现(我知道这可以做到),pythran 会使用它还是会抱怨它?
编辑:我将一个简单的 C 函数编译成一个 so 模块,然后我可以从我的 python 代码中调用它。当从 python 调用时,所有这些都可以正常工作,但是 pythran 在导入时不起作用:
所以看起来 pythran 不适用于已编译的 .so 文件。
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 版本可能会解决这个问题)。有趣的...
python - 将数组排序到索引数组指定的箱中的最有效方法?
任务举例:
预期结果:
约束:
应该很快。
应该是
O(n+k)
其中 n 是数据的长度,k 是 bin 的数量。应该是稳定的,即保持箱内的顺序。
明显的解决方案
是O(n log n)
。
O(n+k)
解决方案
是循环和缓慢的。
numpy
纯< scipy
< pandas
< numba
/有没有更好的方法pythran
?
python - 是否有可能/如何获取在 python 上运行 pythran 生成的 c++ 代码
Pythran 是 Python 到 C++ 的编译器,适用于包含部分 numpy 支持的 Python 子集。它的行为有点像 Numba 和 Cython——你注释一个函数的参数,然后它接管进一步的类型注释和代码专业化。它利用了向量化的可能性和基于 OpenMP 的并行化的可能性。
在一些示例中,我展示了如何从 python 内部使用它来优化它,但我想知道是否可以使用它来将 python 代码转换为 c++ ......
它可以这样做吗?如果我要使用的功能依赖于另一个功能怎么办?如果其他功能是从单独的模块中导入的呢?是否有此类过程的示例/教程?