【问题标题】:C++ Vector in Python for Perfomance用于性能的 Python 中的 C++ 向量
【发布时间】:2018-04-23 15:01:44
【问题描述】:

我正在创建一个图像检测模块,并围绕数组进行大量数学计算。

我知道 C/C++ 的数组迭代速度比 Python 快

我无法将我的项目迁移到 C/C++,所以我想在 C/C++ 中创建一个数组模块并在 Python 中调用它。

我想知道的:

1) 这可行吗?或者从另一个解释器调用模块会使我的程序变慢而不是加快?

2) 是否有一些 Python 包可以满足我的要求?

我觉得我没有写足够的信息,但我想不出其他重要的东西。

[编辑] 所以我选择了 numpy,它拥有我需要的一切:p,谢谢大家

【问题讨论】:

  • 也许可以看看numpy
  • 看看opencv。
  • 是的,你可以创建自己的模块,但如果我是你,我会先尝试 Numpy
  • 旁白:C/C++ 不是一种语言。
  • @UKMonkey 仍然到了 C++ 中的幼稚循环通常可以击败 python 中更优化的解决方案的地步。当人们在 projecteuler.net 等网站上发布解决方案/运行时问题时,您会看到很多

标签: python c++ c arrays


【解决方案1】:

数组和对它的低级操作都必须在 C++ 中;基于每个元素进行切换几乎没有什么好处。

有许多具有内部 C/C++ 实现的 Python 模块。简单地包装一个 C 或 C++ 样式的数组是没有意义的,因为内置的 python 数据类型基本上可以这样。

【讨论】:

  • 等等,python 数据不是结构化的,比如你不能索引吗?数组的数据不是一个接一个地存储在内存中,因此,它比 C 慢(哪个)??
  • @AlexandreDias python的实现有很多。他们以不同的方式存储数据。见这里:docs.python-guide.org/en/latest/starting/which-python——很可能改变你的解释器可能会给你所需的性能。
  • 感谢您的信息,我无法更改解释器
【解决方案2】:

我认为Cython 可能值得研究。它可以显着提高速度,并且与您所描述的非常相似。

【讨论】:

    【解决方案3】:

    它很可能会加快速度(特别是如果您长时间这样做)。唯一的开销可能是在接口处。 c/c++ 代码将运行,但是它被编译为运行。虽然如果您只是想包装数组,您可能应该先看看其他解决方案。

    对于 python 和 c/c++ 的接口,请查看here 的帖子。提供了很多建议

    【讨论】:

      【解决方案4】:

      试试boost.python。 如果你能把所有计算量大的东西都移植到 C++ 上,那会很快,但如果你需要在 C++ 和 python 之间不断切换,你就不会得到太大的改进。

      【讨论】:

        猜你喜欢
        • 2014-09-26
        • 1970-01-01
        • 1970-01-01
        • 2014-05-07
        • 1970-01-01
        • 2012-07-25
        • 1970-01-01
        • 2017-02-06
        • 1970-01-01
        相关资源
        最近更新 更多