#### 网格池 ##### 内容 - MultiProc_unit ##### MultiProc_unit 功能描述:封装网格常用操作 接口汇总:
所属分类 接口名称 说明 备注
总接口 fastmap 调用网格执行函数
日志 gridLogo 网格写日志
等分划分方式 splitDiv 度等分划分 参数为度(int)
splitDiv2 长度等分划分
SplitArrayQK 数组等分划分 参数为数组(array)
SplitArrayQK2 数组等分划分
用户数据相关 DeleteTablebyReg 批量删除用户数据 正则匹配
GettablebyReg 获取用户数据 正则匹配
TryInsetTable 添加用户数据 正则匹配
网格使用经验: 1、网格嵌套(网格模型再去调用开网格),容易有效率问题 2、耗时小于0.2s~1s的函数,不建议用网格,因为此时网格调度耗时将会很耗时 3、在测试网格时使用Timeit 测试比较耗时的网络节点,不同网络节点耗时差异可以为0.02s VS 0.4s 通过设置fastmap的sysparm参数,指定运算网格 ###### 内容 - Fastmap - 范例 - 工具函数 - 中间函数 ###### Fastmap - Fastmap - 范例 - 工具函数 - 中间函数 ###### 范例 ####### 内容 - 提取50的5日涨幅 - 提取50的历史涨幅矩阵 ####### 提取50的5日涨幅 ```text //**********************参数设置***********************// 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; ``` //返回 ####### 提取50的历史涨幅矩阵 ```text //**********************参数设置***********************// 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); end; 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; ``` ###### 工具函数 ####### 内容 - GridLogo ####### GridLogo 范例 ```text //在C:\\temp\\Gridlog默认路径下写日志文件 Return unit(MultiProc_unit).gridLogo('测试'); ``` ###### 中间函数 ####### 内容 - SplitDiv - SplitDiv2 - SplitArrayQK - SplitArrayQK2 - DeleteTablebyReg - GettablebyReg - TryInsetTable ####### SplitDiv 范例 ```text Return unit(MultiProc_unit).splitDiv(14,5); // array(0,2,4,6,8,14) ``` ####### SplitDiv2 范例 ```text Return unit(MultiProc_unit).splitDiv2(14,5); // array(0,3,6,9,12,14) ``` ####### SplitArrayQK 范例 ```text 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 范例 ```text 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 范例 ```text Return unit(MultiProc_unit).DeleteTablebyReg('test'); ``` ####### GettablebyReg 范例 ```text Return unit(MultiProc_unit).GettablebyReg('test'); ``` ####### TryInsetTable 范例 ```text Return unit(MultiProc_unit).TryInsetTable('test',array(1,2,3)); ```