【发布时间】:2020-08-21 18:22:11
【问题描述】:
我编写了一个小 C++ 脚本并使用 pybind11 使 C++ 函数在 python 中可用。从 python 调用时,C++ 函数需要大约 4 秒才能终止。 C++ 函数返回一个长度为 54.346.383 的大数组。 出于好奇,我修改了 C++ 函数并返回了一个长度为 7373 的不同数组,而没有更改代码中的任何其他内容。现在 C++ 函数在 1 秒后终止。因此,据我了解,随着对象大小的增加,将对象从 C++ 传输到 Python 成为一个巨大的瓶颈。
有没有更聪明的方法来处理这个问题?也许使用指针? (我对 C++ 和 pybind11 完全陌生)
#include <pybind11/pybind11.h>
#include <pybind11/numpy.h>
#include <pybind11/stl.h>
#include <vector>
#include <numeric>
namespace py = pybind11;
std::vector<double> isoCdf_seq(std::vector<double> array_w, std::vector<double> W, std::vector<double> Y, std::vector<int> posY, std::vector<double> array_y) {
std::vector<double> CDF;
CDF.reserve(m * mY);
// some code
return CDF;
【问题讨论】: