【问题标题】:What's the most efficient way to share large amounts of data between Python and C++在 Python 和 C++ 之间共享大量数据的最有效方法是什么
【发布时间】:2010-10-02 01:55:56
【问题描述】:

我正在编写一个允许在 C++ 应用程序中执行 python 脚本的系统。

python 脚本用于修改数据数组中的值(通常为 2048x2048x4 浮点数组)

我目前正在使用使用数组 API 创建并使用 Python 注册的 numpy 数组。

在 python 脚本中,我正在访问类似的数组

for all x in range(0,Width):
    for all y in range(0,Height)
        Array[x][y][0] = blah
        Array[x][y][1] = blah
        Array[x][y][2] = blah
        Array[x][y][3] = blah

这似乎很慢。有没有更快的设置方法?

【问题讨论】:

    标签: c++ python optimization


    【解决方案1】:

    您可能想看看Boost.Python。它专注于使 C++ 代码在 Python 中可用,但它还提供了exec and eval functions,它应该允许您有效地与 Python 代码交互。

    【讨论】:

      【解决方案2】:

      我想我会推荐 numpy,但你已经在使用它了。恐怕这会使特定领域的更改做更少的工作。正如 John Montgomery 所提到的,您需要弄清楚 Python 代码中占用时间的原因,并确定是否可以避免其中的一些。

      在 Python 中完成的工作是否有模式?也许您可以提供可以从 Python 代码调用的特定于域的辅助函数(用 C 编写)。

      【讨论】:

        【解决方案3】:

        您可能应该看看是否可以在一个步骤而不是四个(或更多)步骤中设置数组中的多个值。

        我相信省略号语法在这里可能有用:

        How do you use the ellipsis slicing syntax in Python?

        或者类似:

        Array[x,y,:]=blah

        Array[x,y,:]=blah1,blah2,blah3,blah4

        如果每个元素都有不同的值。

        这是假设您的代码中的瓶颈是由于您正在执行的分配数量。可能值得进行一些分析以确切了解什么是缓慢的。尝试相同的代码,但不实际存储结果以查看它是否更快。如果不是,那可能不是作业速度慢……

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-29
          • 1970-01-01
          • 2018-04-25
          • 1970-01-01
          • 2021-07-29
          相关资源
          最近更新 更多