问题标签 [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 回答
7165 浏览

c++ - Cython C++ 和 std::string

从 cython 使用 C++ 标准 std::string 的最佳方法是什么?无论如何,最后一个 cython 发行版应该让它变得容易,但我想知道为什么有 std::vector 的包装器而不是 std::string 的包装器......

0 投票
1 回答
3255 浏览

python - Cython 可以加速对象迭代数组吗?

我想使用 cython 加速以下代码:

唯一想到的是这样的:

基本上,C++ 中的解决方案是使用虚拟方法拥有指向某个基类的指针数组fun(),然后您可以快速迭代它。有没有办法使用 python/cython 来做到这一点?

顺便说一句:将 numpy 的二维数组与 dtype=object_ 一起使用,而不是 python 列表会更快吗?

0 投票
1 回答
6747 浏览

python - Windows XP 中的 Cython 问题:“错误:无法找到 vcvarsall.bat”

Cython 版本是 0.13,Python 3.1 我已经尝试了 Cython 常见问题解答中的所有“解决方案”,但无济于事。我的 Visual Studio 版本是 7.1,它的目录不包含 vcvarsall.bat。这个问题有解决方案吗?

0 投票
2 回答
2184 浏览

python - 为 python 包制作可选 C 扩展的最简单方法是什么?

我创建了一个 C 扩展,我想在我的 Python 包中启用它(使用 setuptools),只有在传入命令行选项时。最简单的方法是什么?

我似乎找不到任何直接的方法来解决这个问题。

0 投票
1 回答
1867 浏览

c++ - 使用 Cython 向另一个应用程序公开功能

我有这个 C++ 代码,它显示了如何通过将软件编译为 DLL 并将其放入应用程序文件夹来扩展软件:

是否可以使用 Cython 以这种方式制作插件?甚至py2exe?DLL 必须有一个入口点,对吗?

或者我应该直接编译它并使用elmer嵌入 Python吗?

0 投票
6 回答
9013 浏览

python - 使用 Cython 进行游戏开发?

使用 Cython 作为游戏的主要编程语言有多实用?

我是一位经验丰富的 Python 程序员,我非常喜欢它,但在游戏编程方面,我无疑是个新手。我知道 Python 通常被认为太慢而无法进行任何严肃的游戏编程,这就是为什么 Cython 对我来说很有趣。使用 Cython,我可以使用具有 C 速度的类似 Python 的语言。

我知道无论如何我可能需要学习一点 C/C++,但相比之下,Cython 似乎会加快开发时间。

那么,实用吗?我还能使用 OpenGL、OpenAL 和 Bullet Physics 等 C/C++ 库吗?

0 投票
4 回答
1915 浏览

python - 使用 C 扩展或 Cython 优化非平凡 Python 应用程序的教程

Python 社区发布了有用的参考资料,展示了如何分析 Python 代码,以及 C 或Cython中 Python 扩展的技术细节。我仍在寻找教程,但是,对于非平凡的 Python 程序,以下内容:

  1. 如何通过转换为 C 扩展来识别将从优化中受益的热点
  2. 同样重要的是,如何识别不会从转换为 C 扩展中受益的热点
  3. 最后,如何从 Python 到 C 进行适当的转换,无论是使用 Python C-API 还是(甚至可能更好)使用 Cython。

一个好的教程将为读者提供一种方法论,说明如何通过一个完整的示例来推理优化问题。我没有成功找到这样的资源。

你知道(或者你写过)这样的教程吗?

为了澄清起见,我对涵盖以下内容的教程不感兴趣:

  • 使用 (c)Profile 分析 Python 代码以测量运行时间
  • 使用工具检查配置文件(我推荐RunSnakeRun
  • 通过选择更合适的算法或 Python 结构进行优化(例如,用于成员资格测试的集合而不是列表);本教程应该假设算法和 Python 代码已经是最优的,并且我们正处于 C 扩展是下一个逻辑步骤的地步
  • 重述有关编写 C 扩展的 Python 文档,该文档已经非常适合作为参考,但不能用作说明何时以及如何从 Python 迁移到 C 的资源。
0 投票
2 回答
1570 浏览

python - cython 中可能的优化:numpy 数组

以下是我从多元正态分布中绘制的 Cython 代码。我正在使用循环,因为每次我都有不同的密度。(conLSigma 是 Cholesky 因子)

这需要很多时间,因为我对每个循环都进行了逆分解和 Cholesky 分解。它比纯 python 代码快,但我想知道是否有任何方法可以提高速度。

0 投票
7 回答
9910 浏览

python - Cython 没有速度提升

我正在尝试定义一个包含用于模拟积分的内部循环的函数。

问题是速度。在我的机器上评估一次函数可能需要 30 秒。由于我的最终目标是最小化这个功能,所以一些额外的速度会很好。

因此,我试图让 Cython 工作,但我一定犯了一个严重的错误(可能很多!)。按照 Cython 文档,我尝试输入我的变量。这样做之后,代码和纯 Python 一样慢。这似乎很奇怪。

这是我的代码:

我已经分析了代码,它似乎是函数 S,积分模拟器,正在扼杀性能。无论如何,我预计输入变量至少会带来一些速度提升。由于它没有产生任何收益,我被引导相信我犯了一些根本性的错误。

有人在 Cython 代码中看到可能导致此结果的明显错误吗?

哦,由于我对编程很陌生,肯定有很多不好的风格和减慢代码速度的事情。如果你有时间,也请随时告诉我这些观点。

0 投票
1 回答
1122 浏览

python - 从 Cython 暴露一个类似文件的对象

我需要从我用 Cython 模块包装的 C 库中公开一个类似文件的对象。我想将 python 的通用 io 代码重用于缓冲、readline() 等内容。

新的 IO 模块似乎正是我所需要的,但实际上从 Cython 使用它似乎并不简单,我尝试了几种方法:

  • 我在从 IO.RawIOBase 继承的 cdef 类中的代码 - 这失败了,因为 cdef 类只能从其他 cython cdef 类继承,而 IO 是“原始”C。

  • 我在 cdef 类中的代码,另一个(非 cdef)类继承了我的 cdef 类和 RawIOBase - 失败并显示“TypeError:多个基础有实例布局冲突”

  • 我在从 RawIOBase 继承的(非 cdef)类中的代码 - 这有效,但我失去了在类中存储我的 c 级别(我需要与底层库对话)东西的能力,所以我需要一个 make围绕它的 cdef 包装器并将其存储为成员......这看起来像一团糟。

  • 我在 cdef 类中的代码不继承 (Raw)IOBase 而是重新实现了它的功能,Python 代码将我的对象包装在 BufferedReader/BufferedWriter 中 - 这个似乎工作并且比前一个选项更不混乱。

我的问题:

1)我错过了什么并在这里重新发明轮子吗?

2) 为了让 BufferedReader/Writer 在当前和未来版本的 python 中对我的对象感到满意,我需要实现哪些来自 IOBase 的确切内容?这在任何地方都有记录吗?

3)在 IO 是纯 python 的 python 2.6 中,这将如何工作?我想性能会受到影响,但它会起作用,对吧?