问题标签 [cython]

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 投票
2 回答
4805 浏览

python - Cython 浮点除法 PyExc_ZeroDivision 错误检查

我正在做一些循环密集型计算并将代码转换为 Cython。我使用 cython -a 选项进行了分析,并检查了 .html 文件,似乎每当我进行浮点除法时,都会出现一些黄线,它会执行以下操作:

我想这是针对分频器为 0 的情况。我为此使用了一个常数,并且分频器不可能为 0,我想知道是否有什么办法可以让它更快。

0 投票
1 回答
1148 浏览

python - 包装一个函数,该函数返回一个指向带有 ctypes 的 python 对象的指针

我有一些代码可以编译一个 C 函数以使用 PyUFunc_FromFuncAndData 创建一个 numpy 通用函数。我已经编写了一些 cython 来创建 ufunc,但如果可能的话,我想使用 ctypes 来完成它,因为我打算分发它并且我想避免用户进行编译步骤。

问题是 PyUFunc_FromFuncAndData 返回一个指向 PyObject 的指针。是否可以将其用作 python 代码中的对象?

基本上,我希望能够将以下 cython 代码转换为 python/ctypes:

0 投票
3 回答
1515 浏览

python - Cython 的计算不正确

我实现了 Madhava-Leibniz 系列在 Python 中计算 pi,然后在 Cython 中提高速度。Python版本:

Cython 版本:

当我停止 Python 版本时,它已将 pi 正确计算为 3.141592。Cython 版本最终以 3.141597 结束,还有一些我不记得的数字(我的终端崩溃了)但不正确。为什么 Cython 版本的计算不正确?

0 投票
1 回答
888 浏览

cython - Cython 递归结构声明

我正在尝试在 Cython 中使用 C 结构,它定义了一个链表:

如您所见,我在其自己的定义中使用了 query_result 类型。在 Cython 中按原样使用它会给我编译器错误:

关于如何在 Cython 中正确处理这个递归定义的任何想法?

0 投票
1 回答
2868 浏览

cython - 在 Cython 中获取结构元素

令人惊讶的是,我似乎找不到一个按名称获取结构元素的示例(无论是在网络上还是在 cython 示例中)。

因此,我从 C 函数中接收到指向结构的指针,并且希望一个一个地访问这些元素并将它们重新打包到 python 列表/字典中。

也许:

或者

我想得到的效果structName->propertyName

0 投票
5 回答
4358 浏览

python - 如何在 Cython 中使用诸如 openMP 之类的东西?

基本上我有一个非常令人尴尬的并行问题,我认为我已经达到了使用普通 python 和多处理实现它的速度的极限,所以我现在正试图通过 Cython 将它降低到一个较低的水平,并希望 openMP .

所以简而言之,我想知道如何将 openMP 与 Cython 一起使用,或者我是否必须包装一些原始 C 代码并通过 Cython 加载/绑定到它?

或者我可以让 Cython 编译成 C 代码,然后修改 C 代码以添加到 openMP 编译指示中,然后编译到库并将其加载到 Python 中?

0 投票
3 回答
2866 浏览

python - 如何在 Cython 中创建一个固定长度、可变的 Python 对象数组?

我需要有一组 python 对象用于创建 trie 数据结构。我需要一个结构,它像元组一样是固定长度,像列表一样是可变的。我不想使用列表,因为我希望能够确保列表的大小完全正确(如果它开始分配额外的元素,那么随着 trie 变大,内存开销可能会很快增加)。有没有办法做到这一点?我尝试创建一个对象数组:

...但这给出了一个错误:

做我想做的事情的最佳方法是什么?

0 投票
1 回答
844 浏览

c++ - 使用 Cython 使用 C++ 共享对象库扩展 Python

所以基本上,我正在尝试用 Python 编写自己的 GUI 包装器(使用 GTK+,但我认为这不相关),用于用 C++ 编写并由用户编译成共享对象文件的 API(在 linux [* nix?我不太确定它在macs上是如何工作的])或一个dll(在windows中),你应该能够参考自己使用API​​。经过一段时间的 Cython 尝试后,我可以编写自己的扩展,只要它只是一个文件,但我无法在网上找到任何关于使用多个文件的内容(因为这显然是,因为任何真正的项目将是)编译成单个 .so 可以导入到 Python 项目中。我是否需要手动检查并使用 Cython 并为每个 .cpp 文件创建 .pyx 文件(其中有很多),将它们编译成 cpp 文件,然后编辑然后使用 make 文件将它们编译成 .so 文件,还是有更自动化的方法?(ps 我尝试用 Cython 分别编译每个文件,但它似乎不喜欢“#include <路径/文件>”符号,因此无法编译大部分文件)

其他信息:我已经能够使用 ctypes 与库进行交互,但这感觉非常hackish和非pythonic,无论如何我想获得更多关于 Cython 的经验,因为它似乎是一个非常有用的资产.

0 投票
2 回答
8677 浏览

python - Cythonize 一个 Python 函数以使其更快

几周前,我问了一个关于提高用 Python 编写的函数的速度的问题。当时,TryPyPy 让我注意到了使用 Cython 这样做的可能性。他还好心地举了一个例子,说明我如何对那个代码片段进行 Cythonize。我想对下面的代码做同样的事情,看看我可以通过声明变量类型来多快。我有几个与此相关的问题。我在 cython.org 上看过教程,但我仍有一些问题。它们密切相关:

  1. 我不懂任何 C。我需要学习哪些部分才能使用 Cython 声明变量类型?
  2. python列表和元组对应的C类型是什么?例如,我可以double在 Cythonfloat中使用 Python 中的 for。我要为列表做什么?一般来说,我在哪里可以找到给定 Python 类型对应的 C 类型。

任何关于我如何对下面的代码进行 Cythonize 的示例都会非常有帮助。我在代码中插入了注释,提供有关变量类型的信息。

0 投票
1 回答
383 浏览

python - Windows下构建cython程序的问题

我开始在配置了 Python 2.6 的 windows xp 机器上玩 cython。我试图在 Cython 网站上运行这个简单的示例,但是示例 .pyx 文件的转换立即失败并出现令人困惑的错误。

.pyx 文件是

setup.py 看起来像

在命令窗口中,我执行命令

请注意,所有这一切正是网页所说的。

结果,我得到以下输出:

错误消息显示“无法识别的字符”。

我在 linux 机器上尝试了相同的示例,它工作正常。

这里有什么问题,为什么冒号被标记为无法识别?