运行脚本或函数

连接池提供两个函数来分别运行脚本和函数,函数声明如下:

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