运行函数
DBConnection::run
方法除了运行脚本之外,还提供了一个同名重载方法来执行 DolphinDB
内置或用户自定义函数。该方法声明如下:
ConstantSP run(const string& funcName, vector<ConstantSP>& args, int priority=4, int parallelism=2, int fetchSize=0, bool clearMemory = false);
参数
funcName
:表示待执行的函数名。args
:表示该函数的参数。priority
:表示优先级,默认是 4。parallelism
:表示并行度,默认是 64。fetchSize
:对于大数据量的表,为防止内存占用过多,API 提供了分段读取方法,默认值是0。clearMemory
:表示是否在执行结束后清理内存,默认为 false。
返回值
返回脚本执行结果。
使用示例
以下 2 个示例程序将展示通过 run 方法来调用 DolphinDB 内置 add
函数,其中
add
函数需要两个参数:x 和 y。
例子1:当参数 x 和 y 都只存在于 C++应用中时,用法如下:
vector<ConstantSP> args;
ConstantSP x = Util::createVector(DT_DOUBLE, 3); //构造参数x
double array_x[] = {1.5, 2.5, 7};
x->setDouble(0, 3, array_x);
args.push_back(x);
ConstantSP y = Util::createVector(DT_DOUBLE, 3); //构造参数y
double array_y[] = {8.5, 7.5, 3};
y->setDouble(0, 3, array_y);
args.push_back(y);
ConstantSP result = conn.run("add", args); //执行函数add
std::cout << result->getString() << std::endl; //输出结果[10, 10, 10]
例子2:当参数 y 存在于 server 端,参数 x 存在于 C++应用中时,此时需要使用“部分应用”方式,把参数 y 固化在 add
函数内。具体请参考:部分应用。
conn.run("y = [1, 3, 5]"); //在server端定义向量y
vector<ConstantSP> args;
ConstantSP x = Util::createVector(DT_DOUBLE, 3); //在C++应用中构造参数x
double array_x[] = {9, 7, 5};
x->setDouble(0, 3, array_x);
args.push_back(x);
ConstantSP result = conn.run("add{,y}", args); //执行函数add
std::cout << result->getString() << std::endl; //输出结果[10, 10, 10]