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

19 KiB

并行计算 / 任务池

fastmap_withconfig(grid_no, func, parms, parmstype, configs)

声明:function

读取 configs,解析参数信息,调用 fastmap 模型

参数 类型 说明
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

参数 类型 说明
pool_num int 整型,任务池数,默认两个
func string 字符串型或函数指针,要调用网格计算的函数
parms array 数组,func 的参数列表
parmstype array 数组,parms 的对应类型 取值 说明 0\nil 每次调用都是相同的值(默认) 1 按网格数均分,调用的时候直接用子数组 2 按网格数均分,调用执行的时候,对子数组数组元素单个依次取
configs array 字符串下标数组,执行所需的其他配置,设置

返回:array

示例

范例01:.4.1 提取 50 的 5 日涨幅

//**********************参数设置***********************//
   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:调用示例

//**********************参数设置***********************//
   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:调用示例

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 一个文件

参数 类型 说明
str string 字符串型,任务名称
dir string 字符串型,日志文件路径 ,默认为:C:\temp\Gridlog

返回:int

示例

范例01:调用示例

//在C:\\temp\\Gridlog 默认路径下写日志文件
Return unit(MultiProc_unit).gridLogo('测试');

splitDiv(len, n)

声明:function

网格参数划分,分不平均时,余数给最后一个网格

参数 类型 说明
len int 整型,参数个数 N_:整型,网格个数
n int 分组或移动窗口的期数/数量

返回:array

示例

范例01:调用示例

Return unit(MultiProc_unit).splitDiv(14,5); // array(0,2,4,6,8,14)

splitDiv2(len, n)

声明:function

网格参数划分,分不平均时,前面 M 个网格加一

参数 类型 说明
len int 整型,参数长度 N_:整型,网格个数
n int 分组或移动窗口的期数/数量

返回:array

示例

范例01:调用示例

Return unit(MultiProc_unit).splitDiv2(14,5); // array(0,3,6,9,12,14)

splitArrayQK(arr, n)

声明:function

数组等分区间,余数给最后一个网格

参数 类型 说明
arr array 数组,要划分数组 N_:整型,网格个数
n int 分组或移动窗口的期数/数量

返回:array

示例

范例01:调用示例

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 个网格加一

参数 类型 说明
arr array 数组,要划分数组 N_:整型,网格个数
n int 分组或移动窗口的期数/数量

返回:array

示例

范例01:调用示例

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

通过正则表达式匹配名称,批量删除用户数据

参数 类型 说明
reg string 字符串型,匹配的字符串

返回:int

示例

范例01:调用示例

Return unit(MultiProc_unit).DeleteTablebyReg('test');

gettablebyReg(reg)

声明:function

通过正则表达式匹配名称,获取用户数据

参数 类型 说明
reg string 字符串型,匹配的字符串

返回:array

示例

范例01:调用示例

Return unit(MultiProc_unit).GettablebyReg('test');

tryInsetTable(path, value)

声明:function

添加用户数据,如果用户数据存在同名,则插入,否则新建

参数 类型 说明
path string 字符串型,用户数据存储路径
value array 数组,要存储的数据

返回:int

示例

范例01:调用示例

Return unit(MultiProc_unit).TryInsetTable('test',array(1,2,3));

create(grid_num, name, funafter)

声明:function

初始化

参数 类型 说明
grid_num integer 整数,网格数,可不给,与类属性 GridNum 一致
name string 字符串,名称,可不给,与类属性 name 一致
funafter string 字符串,回调模型,可不给,不给时回调模型走类方法 fun_after

返回:any

fun_after(state, ret, param)

声明:function

执行完之后的自动回调,可重写,主方法自动调用,如果初始化时设置了funafter 参数,则优

参数 类型 说明
state integer 整数或字符串,此次调用的执行状态,报错则为报错信息串 -1:未启动 0:已顺利计算完 1:正在计算 字符串:报错信息
ret array 此次调用的执行结果
param array 此次调用的参数

返回:any

fun_afterwithinfo(state, ret, param, info)

声明:function

执行完之后的自动回调,有信息列是将信息列与执行结果合并,可重写,主方法自动调用

参数 类型 说明
state integer 整数或字符串,此次调用的执行状态,报错则为报错信息串 -1:未启动 0:已顺利计算完 1:正在计算 字符串:报错信息
ret array 此次调用的执行结果
param array 此次调用的参数
info any 信息列

返回:any

get_result(contype)

声明:function

回收各进程池的计算结果,如果有信息列则合并在结果中

参数 类型 说明
contype any 结果合并或返回方式

返回:any

get_runsummary(ifsuccess, ifallfileds)

声明:function

执行报告

参数 类型 说明
ifsuccess any 整型,执行报告处理
ifallfileds any 整型,返回字段处理,默认为 0 取值 说明 0 不返回执行结果字段 1 返回全部字段

返回:any

joins()

声明:function

等待所有进程结束

返回:any

set_mapfunc(funname, param_1, param_2, arg_4)

声明:function

添加执行

参数 类型 说明
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

添加执行,传入信息列

参数 类型 说明
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

添加执行,储存计算结果

参数 类型 说明
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

添加执行,传入信息列并储存结果

参数 类型 说明
info any 与任务结果关联的信息数据
funname any 目标函数名称
param_1 any 添加执行,传入信息列并储存结果使用的 param_1 输入值
param_2 any 添加执行,传入信息列并储存结果使用的 param_2 输入值
arg_5 any 添加执行,传入信息列并储存结果使用的 arg_5 输入值

返回:any

waits(tm, maxtimes)

声明:function

轮训等待可用网格,设置最大轮训次数

参数 类型 说明
tm datetime 间隔时间,默认值为由类属性 default_poll_time 设置(1.5s) maxtimes 为最大轮训次数,默认值为 100000,若轮训次数>maxtimes,则退出等待,返回日志: 等待达到最大次数 maxtimes!!!
maxtimes any 允许的最大轮询次数

返回:any

waits_forever(tm)

声明:function

轮训等待可用网格,不设置最大轮训次数

参数 类型 说明
tm datetime 间隔时间,默认值为由类属性 default_poll_time 设置(1.5s)

返回:any