Files
playbook/skills/tsl-api-reference/references/codegen/module/ts-pool-executor.md
T

534 lines
19 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 并行计算 / 任务池
## `fastmap_withconfig(grid_no, func, parms, parmstype, configs)`
声明:function
读取 configs,解析参数信息,调用 fastmap 模型
<!-- tags: 查询 执行 转换 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ----------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `grid_no` | int | 整型,网格数 |
| `func` | string | 字符串型或函数指针,要调用网格计算的函数 |
| `parms` | array | 数组,func 的参数列表 |
| `parmstype` | array | 数组,parms 的对应类型 取值 说明 0\nil 每次调用都是相同的值(默认) 1 按网格数均分,调用的时候直接用子数组 2 按网格数均分,调用执行的时候,对子数组数组元素单个依次取 |
| `configs` | array | 字符串下标数组,执行所需的其他配置,设置 |
返回:int
## `fastpoolmap_withconfig(pool_num, func, parms, parmstype, configs)`
声明:function
fastmap 任务池版接口,调用网格执行 func
<!-- tags: 并发执行 工作池 分布式计算 并行执行 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ----------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `pool_num` | int | 整型,任务池数,默认两个 |
| `func` | string | 字符串型或函数指针,要调用网格计算的函数 |
| `parms` | array | 数组,func 的参数列表 |
| `parmstype` | array | 数组,parms 的对应类型 取值 说明 0\nil 每次调用都是相同的值(默认) 1 按网格数均分,调用的时候直接用子数组 2 按网格数均分,调用执行的时候,对子数组数组元素单个依次取 |
| `configs` | array | 字符串下标数组,执行所需的其他配置,设置 |
返回:array
### 示例
范例01.4.1 提取 50 的 5 日涨幅
```tsl
//**********************参数设置***********************//
N := 5;
endt := today();
stocks := getbk("上证50");
//**********************网格模版*********************//
gridNo := 3; //网格个数,0:表示只使用本地服务器
func := FunctionName() + '.tsubbystocks'; //网格函数
parms := array(N,endt,stocks);
parmstype := array(0, 0, 1);
return unit(MultiProc_unit).fastmap(gridNo,func,parms,parmstype);
//***********************子函数**********************//
function tsubbystocks(N, endt,stocks);
begin
sp_s(pn_date(),endt);
i := 0;
ret := array();
for _,stk in stocks do
begin
sp_s(PN_Stock(),stk);
for j := 0 to N do
begin
ret[I,'截止日'] := ref(sp_time(),j);
ret[i,'代码'] := stk;
ret[i,'名称'] := stockname(stk);
ret[I,'涨幅(%)'] := ref(stockzf3(),j);
i++;
end
end;
return ret;
end;
```
范例02:调用示例
```tsl
//**********************参数设置***********************//
N := 5;
endt := today();
stocks := getbk("上证50");
//**********************网格模版*********************//
//**********************网格模版*********************//
gridNo := 3; //网格个数,0:表示只使用本地服务器
func := FunctionName() + '.tsubbystock'; //网格函数
parms := array(N,endt,stocks);
parmstype := array(0, 0, 2);
return unit(MultiProc_unit).fastmap(gridNo,func,parms,parmstype);
function tsubbystock(N, endt,stock);
begin
sp_s(PN_Stock(),stock);
sp_s(pn_date(),endt);
ret := array(
"代码":stock,
"名称":stockname(stock),
"截止日":endt,
);
for i := 1 to N do
ret["T_" $ i] := ref(stockzf3(),i);
return ret;
end;
```
范例03:调用示例
```tsl
N := 5;
endt := today();
stocks := getbk("上证50");
//-------------------------==进程池模板==----------------------------
poolNum := 2; //进程池数,默认为2
func := FunctionName() + '.tsubbystocks'; //网格函数
parms := array(N,endt,stocks);
parmstype := array(0, 0, 1);
configs := array("结果拼接方式":0,'任务单元数':3);
return unit(MultiProc_unit).fastpoolmap_withconfig(poolNum, func,
parms,parmstype,configs);
//-------------------------==子函数==----------------------------
function tsubbystocks(N, endt,stocks);
begin
sp_s(pn_date(),endt);
i := 0;
ret := array();
for _,stk in stocks do
begin
sp_s(PN_Stock(),stk);
for j := 0 to N-1 do
begin
ret[I,'截止日'] := ref(sp_time(),j);
ret[i,'代码'] := stk;
ret[i,'名称'] := stockname(stk);
ret[I,'涨幅(%)'] := ref(stockzf3(),j);
i++;
end
end;
return ret;
end;
```
## `gridLogo(str, dir)`
声明:function
网格写日志,一个网格 id 一个文件
<!-- tags: 文件系统 文档文件 分布式计算 并行执行 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ----- | ------ | -------------------------------------------------- |
| `str` | string | 字符串型,任务名称 |
| `dir` | string | 字符串型,日志文件路径 ,默认为:C:\\temp\\Gridlog |
返回:int
### 示例
范例01:调用示例
```tsl
//在C:\\temp\\Gridlog 默认路径下写日志文件
Return unit(MultiProc_unit).gridLogo('测试');
```
## `splitDiv(len, n)`
声明:function
网格参数划分,分不平均时,余数给最后一个网格
<!-- tags: 拆分 分割 分布式计算 并行执行 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ----- | ---- | --------------------------------- |
| `len` | int | 整型,参数个数 N_:整型,网格个数 |
| `n` | int | 分组或移动窗口的期数/数量 |
返回:array
### 示例
范例01:调用示例
```tsl
Return unit(MultiProc_unit).splitDiv(14,5); // array(0,2,4,6,8,14)
```
## `splitDiv2(len, n)`
声明:function
网格参数划分,分不平均时,前面 M 个网格加一
<!-- tags: 拆分 分割 分布式计算 并行执行 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ----- | ---- | --------------------------------- |
| `len` | int | 整型,参数长度 N_:整型,网格个数 |
| `n` | int | 分组或移动窗口的期数/数量 |
返回:array
### 示例
范例01:调用示例
```tsl
Return unit(MultiProc_unit).splitDiv2(14,5); // array(0,3,6,9,12,14)
```
## `splitArrayQK(arr, n)`
声明:function
数组等分区间,余数给最后一个网格
<!-- tags: 拆分 分割 列表 集合 分布式计算 并行执行 并行计算 网格计算 -->
| 参数 | 类型 | 说明 |
| ----- | ----- | ----------------------------------- |
| `arr` | array | 数组,要划分数组 N_:整型,网格个数 |
| `n` | int | 分组或移动窗口的期数/数量 |
返回:array
### 示例
范例01:调用示例
```tsl
arr := array(2,1,3,4,9,5,7,8,9,10,11,12,13,15);
return unit(MultiProc_unit).SplitArrayQK(arr,5);
//array((2,1),(3,4),(9,5),(7,8),(9,15))
```
## `splitArrayQK2(arr, n)`
声明:function
数组等分区间,分不平均时,前面 M 个网格加一
<!-- tags: 拆分 分割 列表 集合 分布式计算 并行执行 并行计算 网格计算 -->
| 参数 | 类型 | 说明 |
| ----- | ----- | ----------------------------------- |
| `arr` | array | 数组,要划分数组 N_:整型,网格个数 |
| `n` | int | 分组或移动窗口的期数/数量 |
返回:array
### 示例
范例01:调用示例
```tsl
arr := array(2,1,3,4,9,5,7,8,9,10,11,12,13,15);
return unit(MultiProc_unit).SplitArrayQK2(arr,5);
// array((2,3),(4,5),(7,9),(10,12),(13,15))
```
## `deleteTablebyReg(reg)`
声明:function
通过正则表达式匹配名称,批量删除用户数据
<!-- tags: 清理 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ----- | ------ | ---------------------- |
| `reg` | string | 字符串型,匹配的字符串 |
返回:int
### 示例
范例01:调用示例
```tsl
Return unit(MultiProc_unit).DeleteTablebyReg('test');
```
## `gettablebyReg(reg)`
声明:function
通过正则表达式匹配名称,获取用户数据
<!-- tags: 查询 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ----- | ------ | ---------------------- |
| `reg` | string | 字符串型,匹配的字符串 |
返回:array
### 示例
范例01:调用示例
```tsl
Return unit(MultiProc_unit).GettablebyReg('test');
```
## `tryInsetTable(path, value)`
声明:function
添加用户数据,如果用户数据存在同名,则插入,否则新建
<!-- tags: 创建 表数据 二维表 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ------- | ------ | -------------------------- |
| `path` | string | 字符串型,用户数据存储路径 |
| `value` | array | 数组,要存储的数据 |
返回:int
### 示例
范例01:调用示例
```tsl
Return unit(MultiProc_unit).TryInsetTable('test',array(1,2,3));
```
## `create(grid_num, name, funafter)`
声明:function
初始化
<!-- tags: 创建 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ---------- | ------- | ---------------------------------------------------------- |
| `grid_num` | integer | 整数,网格数,可不给,与类属性 GridNum 一致 |
| `name` | string | 字符串,名称,可不给,与类属性 name 一致 |
| `funafter` | string | 字符串,回调模型,可不给,不给时回调模型走类方法 fun_after |
返回:any
## `fun_after(state, ret, param)`
声明:function
执行完之后的自动回调,可重写,主方法自动调用,如果初始化时设置了funafter 参数,则优
<!-- tags: 配置 事件处理 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ------- | ------- | ------------------------------------------------------------------------------------------------------------ |
| `state` | integer | 整数或字符串,此次调用的执行状态,报错则为报错信息串 -1:未启动 0:已顺利计算完 1:正在计算 字符串:报错信息 |
| `ret` | array | 此次调用的执行结果 |
| `param` | array | 此次调用的参数 |
返回:any
## `fun_afterwithinfo(state, ret, param, info)`
声明:function
执行完之后的自动回调,有信息列是将信息列与执行结果合并,可重写,主方法自动调用
<!-- tags: 组合 事件处理 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ------- | ------- | ------------------------------------------------------------------------------------------------------------ |
| `state` | integer | 整数或字符串,此次调用的执行状态,报错则为报错信息串 -1:未启动 0:已顺利计算完 1:正在计算 字符串:报错信息 |
| `ret` | array | 此次调用的执行结果 |
| `param` | array | 此次调用的参数 |
| `info` | any | 信息列 |
返回:any
## `get_result(contype)`
声明:function
回收各进程池的计算结果,如果有信息列则合并在结果中
<!-- tags: 查询 组合 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| --------- | ---- | ------------------ |
| `contype` | any | 结果合并或返回方式 |
返回:any
## `get_runsummary(ifsuccess, ifallfileds)`
声明:function
执行报告
<!-- tags: 查询 调用 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ------------- | ---- | -------------------------------------------------------------------------- |
| `ifsuccess` | any | 整型,执行报告处理 |
| `ifallfileds` | any | 整型,返回字段处理,默认为 0 取值 说明 0 不返回执行结果字段 1 返回全部字段 |
返回:any
## `joins()`
声明:function
等待所有进程结束
<!-- tags: 阻塞 并行计算 网格计算 任务池 -->
返回:any
## `set_mapfunc(funname, param_1, param_2, arg_4)`
声明:function
添加执行
<!-- tags: 配置 调用 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| --------- | ---- | ------------------------------- |
| `funname` | any | 目标函数名称 |
| `param_1` | any | 添加执行使用的 `param_1` 输入值 |
| `param_2` | any | 添加执行使用的 `param_2` 输入值 |
| `arg_4` | any | 添加执行使用的 `arg_4` 输入值 |
返回:any
## `set_mapfuncwithinfo(info, funname, param_1, param_2, arg_5)`
声明:function
添加执行,传入信息列
<!-- tags: 配置 调用 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| --------- | ---- | ------------------------------------------- |
| `info` | any | 与任务结果关联的信息数据 |
| `funname` | any | 目标函数名称 |
| `param_1` | any | 添加执行,传入信息列使用的 `param_1` 输入值 |
| `param_2` | any | 添加执行,传入信息列使用的 `param_2` 输入值 |
| `arg_5` | any | 添加执行,传入信息列使用的 `arg_5` 输入值 |
返回:any
## `set_resultmapfunc(funname, param_1, param_2, arg_4)`
声明:function
添加执行,储存计算结果
<!-- tags: 配置 调用 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| --------- | ---- | --------------------------------------------- |
| `funname` | any | 目标函数名称 |
| `param_1` | any | 添加执行,储存计算结果使用的 `param_1` 输入值 |
| `param_2` | any | 添加执行,储存计算结果使用的 `param_2` 输入值 |
| `arg_4` | any | 添加执行,储存计算结果使用的 `arg_4` 输入值 |
返回:any
## `set_resultmapfuncwithinfo(info, funname, param_1, param_2, arg_5)`
声明:function
添加执行,传入信息列并储存结果
<!-- tags: 配置 调用 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| --------- | ---- | ----------------------------------------------------- |
| `info` | any | 与任务结果关联的信息数据 |
| `funname` | any | 目标函数名称 |
| `param_1` | any | 添加执行,传入信息列并储存结果使用的 `param_1` 输入值 |
| `param_2` | any | 添加执行,传入信息列并储存结果使用的 `param_2` 输入值 |
| `arg_5` | any | 添加执行,传入信息列并储存结果使用的 `arg_5` 输入值 |
返回:any
## `waits(tm, maxtimes)`
声明:function
轮训等待可用网格,设置最大轮训次数
<!-- tags: 配置 阻塞 分布式计算 并行执行 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ---------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `tm` | datetime | 间隔时间,默认值为由类属性 default_poll_time 设置(1.5s) maxtimes 为最大轮训次数,默认值为 100000,若轮训次数>maxtimes,则退出等待,返回日志: 等待达到最大次数 maxtimes!!! |
| `maxtimes` | any | 允许的最大轮询次数 |
返回:any
## `waits_forever(tm)`
声明:function
轮训等待可用网格,不设置最大轮训次数
<!-- tags: 配置 阻塞 分布式计算 并行执行 并行计算 网格计算 任务池 -->
| 参数 | 类型 | 说明 |
| ---- | -------- | ------------------------------------------------------- |
| `tm` | datetime | 间隔时间,默认值为由类属性 default_poll_time 设置(1.5s) |
返回:any