运行脚本或函数
连接池提供两个函数来分别运行脚本和函数,函数声明如下:
void run(const string& script, int identity, int priority=4, int parallelism=2, int fetchSize=0, bool clearMemory = false);
void run(const string& functionName, const vector<ConstantSP>& args, int identity, int priority=4, int parallelism=2, int fetchSize=0, bool clearMemory = false);
参数说明
以下为运行方法的参数说明,部分参数如 priority, parallelism, fetchSize, clearMemory 的详细介绍可参考:运行脚本与函数。
-
script
:待执行的脚本。 -
funcionName
:待执行的函数名。 -
args
:该函数的参数。 -
priority
:优先级,默认是4。 -
parallelism
:并行度,默认是2。 -
fetchSize
:对于大数据量的表,为防止内存占用过多,API 提供了分段读取方法,默认值是0。其取值不能小于 8192。 -
clearMemory
:是否在执行结束后清理内存,默认为 false 。 -
identity
:提交的任务的 taskId,在判断任务是否完成以及获取执行结果时会用到这个 taskId。
注: 并发执行的任务不要使用相同的
identity
,否则后完成的任务会覆盖先完成任务的结果。示例代码
//运行脚本
pool.run("1+1", 0);
//运行函数
vector<ConstantSP> args;
ConstantSP x = Util::createVector(DT_DOUBLE, 3);
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);
double array_y[] = {8.5, 7.5, 3};
y->setDouble(0, 3, array_y);
args.push_back(y);
pool.run("add", args, 1);