问题标签 [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.
c++ - Cython C++ 和 std::string
从 cython 使用 C++ 标准 std::string 的最佳方法是什么?无论如何,最后一个 cython 发行版应该让它变得容易,但我想知道为什么有 std::vector 的包装器而不是 std::string 的包装器......
python - Cython 可以加速对象迭代数组吗?
我想使用 cython 加速以下代码:
唯一想到的是这样的:
基本上,C++ 中的解决方案是使用虚拟方法拥有指向某个基类的指针数组fun()
,然后您可以快速迭代它。有没有办法使用 python/cython 来做到这一点?
顺便说一句:将 numpy 的二维数组与 dtype=object_ 一起使用,而不是 python 列表会更快吗?
python - Windows XP 中的 Cython 问题:“错误:无法找到 vcvarsall.bat”
Cython 版本是 0.13,Python 3.1 我已经尝试了 Cython 常见问题解答中的所有“解决方案”,但无济于事。我的 Visual Studio 版本是 7.1,它的目录不包含 vcvarsall.bat。这个问题有解决方案吗?
python - 为 python 包制作可选 C 扩展的最简单方法是什么?
我创建了一个 C 扩展,我想在我的 Python 包中启用它(使用 setuptools),只有在传入命令行选项时。最简单的方法是什么?
我似乎找不到任何直接的方法来解决这个问题。
c++ - 使用 Cython 向另一个应用程序公开功能
我有这个 C++ 代码,它显示了如何通过将软件编译为 DLL 并将其放入应用程序文件夹来扩展软件:
是否可以使用 Cython 以这种方式制作插件?甚至py2exe?DLL 必须有一个入口点,对吗?
或者我应该直接编译它并使用elmer嵌入 Python吗?
python - 使用 Cython 进行游戏开发?
使用 Cython 作为游戏的主要编程语言有多实用?
我是一位经验丰富的 Python 程序员,我非常喜欢它,但在游戏编程方面,我无疑是个新手。我知道 Python 通常被认为太慢而无法进行任何严肃的游戏编程,这就是为什么 Cython 对我来说很有趣。使用 Cython,我可以使用具有 C 速度的类似 Python 的语言。
我知道无论如何我可能需要学习一点 C/C++,但相比之下,Cython 似乎会加快开发时间。
那么,实用吗?我还能使用 OpenGL、OpenAL 和 Bullet Physics 等 C/C++ 库吗?
python - 使用 C 扩展或 Cython 优化非平凡 Python 应用程序的教程
Python 社区发布了有用的参考资料,展示了如何分析 Python 代码,以及 C 或Cython中 Python 扩展的技术细节。我仍在寻找教程,但是,对于非平凡的 Python 程序,以下内容:
- 如何通过转换为 C 扩展来识别将从优化中受益的热点
- 同样重要的是,如何识别不会从转换为 C 扩展中受益的热点
- 最后,如何从 Python 到 C 进行适当的转换,无论是使用 Python C-API 还是(甚至可能更好)使用 Cython。
一个好的教程将为读者提供一种方法论,说明如何通过一个完整的示例来推理优化问题。我没有成功找到这样的资源。
你知道(或者你写过)这样的教程吗?
为了澄清起见,我对仅涵盖以下内容的教程不感兴趣:
- 使用 (c)Profile 分析 Python 代码以测量运行时间
- 使用工具检查配置文件(我推荐RunSnakeRun)
- 通过选择更合适的算法或 Python 结构进行优化(例如,用于成员资格测试的集合而不是列表);本教程应该假设算法和 Python 代码已经是最优的,并且我们正处于 C 扩展是下一个逻辑步骤的地步
- 重述有关编写 C 扩展的 Python 文档,该文档已经非常适合作为参考,但不能用作说明何时以及如何从 Python 迁移到 C 的资源。
python - cython 中可能的优化:numpy 数组
以下是我从多元正态分布中绘制的 Cython 代码。我正在使用循环,因为每次我都有不同的密度。(conLSigma 是 Cholesky 因子)
这需要很多时间,因为我对每个循环都进行了逆分解和 Cholesky 分解。它比纯 python 代码快,但我想知道是否有任何方法可以提高速度。
python - Cython 没有速度提升
我正在尝试定义一个包含用于模拟积分的内部循环的函数。
问题是速度。在我的机器上评估一次函数可能需要 30 秒。由于我的最终目标是最小化这个功能,所以一些额外的速度会很好。
因此,我试图让 Cython 工作,但我一定犯了一个严重的错误(可能很多!)。按照 Cython 文档,我尝试输入我的变量。这样做之后,代码和纯 Python 一样慢。这似乎很奇怪。
这是我的代码:
我已经分析了代码,它似乎是函数 S,积分模拟器,正在扼杀性能。无论如何,我预计输入变量至少会带来一些速度提升。由于它没有产生任何收益,我被引导相信我犯了一些根本性的错误。
有人在 Cython 代码中看到可能导致此结果的明显错误吗?
哦,由于我对编程很陌生,肯定有很多不好的风格和减慢代码速度的事情。如果你有时间,也请随时告诉我这些观点。
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 中,这将如何工作?我想性能会受到影响,但它会起作用,对吧?