PybDn11:在C++函数中返回一个大数组,大大增加了Python中的计算时间。

2024-05-29 10:41:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了一个C++脚本,使用pybDun11来实现Python中的C++函数。当从Python调用时,C++函数需要大约4秒才能终止。C++函数返回长度为54.34×38的大数组。 出于好奇,我修改了C++函数,并返回了一个长度为7373的不同数组,而不改变代码中的任何其他内容。现在C++函数以1秒结束。因此,当我理解到,对象从C++到Python的传输成为一个巨大的瓶颈,因为对象的大小增加了。p>

有没有更聪明的方法来处理这个问题?也许和指针一起工作?(我对C++和PybDin 11完全陌生)

#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;


Tags: 对象函数代码脚本内容include数组array

热门问题