gpt4 book ai didi

python - 以性能方式扩展 python/numpy 的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:35 24 4
gpt4 key购买 nike

由于有多种方法可以为 python 编写二进制模块,如果我希望尽可能提高某些代码段的性能,我希望有经验的人可以就最佳方法提出建议。

据我所知,可以使用 python/numpy C-api 编写扩展,或者包装一些已编写的纯 C/C++/Fortran 函数以从 python 代码调用。

当然,像 Cython 这样的工具是最简单的方法,但我认为手动编写代码可以更好地控制并提供更好的性能。

问题是使用哪种方法,这可能是一个普遍的问题。编写 C 或 C++ 扩展?包装外部 C/C++ 函数或使用回调到 Python 函数?

我在阅读 Langtangen 的“用于计算科学的 Python 脚本”的第 10 章后写了这个问题,其中比较了几种在 Python 和 C 之间进行接口(interface)的方法。

最佳答案

我会说这取决于您的技能/经验和您的项目。如果这非常准时并且您精通 C/C++ 并且您已经编写了 python 包装器,那么请编写您自己的扩展并连接它。

如果您打算在其他项目中使用 Numpy,请选择 Numpy C-API,它内容广泛且文档齐全,但也需要处理大量文档。至少我在处理它时遇到了很多困难,但话又说回来,我在 C 上很烂。

如果您不太确定,请使用 Cython,它耗时少得多,而且在大多数情况下性能非常好。 (我的选择)从我的角度来看,你需要成为一名优秀的 C 编码员才能比 Cython 的 2 先前实现做得更好,而且它会更加复杂和耗时。那么,您是出色的 C 编码员吗?

如果您正在寻找性能,那么研究 pycuda 或其他一些 GPGPU 的东西可能也值得,当然这取决于您的硬件。

关于python - 以性能方式扩展 python/numpy 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10351450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com