我正在编写一个允许在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
这似乎很慢。有没有更快的方法来设置它?
答案 0 :(得分:1)
您可能需要查看Boost.Python。它侧重于在Python中提供C ++代码,但它还提供了exec and eval functions,它允许您有效地与python代码交互。
答案 1 :(得分:1)
我以为我会建议numpy,但你已经在使用它了。我担心会留下特定于域的更改来减少工作量。正如John Montgomery所提到的,你需要弄清楚Python代码中花费的时间,并确定你是否可以避免使用它。
Python中的工作是否有模式?也许你可以提供可以从Python代码调用的特定于域的辅助函数(用C编写)。
答案 2 :(得分:0)
您应该看看是否可以在一个步骤中而不是在四个(或更多)步骤中设置数组中的多个值。
我相信省略号语法在这里可能很有用:
How do you use the ellipsis slicing syntax in Python?
或者类似的东西:
Array[x,y,:]=blah
或
Array[x,y,:]=blah1,blah2,blah3,blah4
如果每个元素都有不同的值。
这假设您代码中的瓶颈是由于您正在执行的分配数量。可能值得进行一些分析以确切地了解什么是缓慢的。尝试使用相同的代码,但不实际存储结果以查看它是否更快。如果不是那么它可能不是那么缓慢的任务......