2023-09-12 客户端升级后,提供本地化脚本网格#的多线程调用支持。
使用方式和平台网格调用一样,支持本地多线程网格计算,可通过TSL.INI进行配置相关参数。
说明:
客户端升级后,默认是启动了网格的状态,且默认为128个最大线程。
若用户需要另外修改该配置,可以通过添加TSL.ININ文件的方式进行配置相关参数。
本地执行使用网格方式如下(与客户端中使用方式一致):
tsl脚本文件运行(或客户端中本地执行)
mtic;
r:=array();
for i:=0 to 9 do
r[i]:=# dosumN(i);
b:=array();
for j:=0 to length(r)-1 do
b[j]:=dupvalue(r[j]);
echo 'time-',mtoc,'\r\n';
echo tostn(b);
return 1;
Function dosumN(n);
begin
sleep(1*1000);//暂停1秒
return sum(0->n);
end
打印结果:
time-1.0144626
array(0.0,1.0,3.0,6.0,10.0,15.0,21.0,28.0,36.0,45.0)
可以看出,执行过程中用到了并发:dosumN过程计算10次,每次花费至少1秒,总共时间只花费了1秒多点,说明10个并行进程全部用到了网格并发计算。
TSL.ININ配置说明
第一步:在天软安装目录下,添加TSL.INI文件(存放目录与TSL.exe解释器文件保存一致)。
第二步:配置TSL.INI文件内容与参数
格式如下:
[multitask]
#本地网格计算启动的最大线程数---用户可修改其值
maxthread=128
#最大计算任务的等待队列---用户可修改其值
maxpending=16777216
#未完成的任务等待判断间隔毫秒数---用户可修改其值
busyinterval=3000
#最大等待的次数---用户可修改其值
busyretry=100000
其中,maxthread即是设置最大网格线程数,当设置为maxthread=2时,则最大网格线程数就是2个。
第三步:保存后,重启客户端或重启解释器,就能生效。
配置后本地使用网格的范例:
配置如下:
配置了5个最大线程数,保存重启后,做下面的执行。
脚本中网格执行子程序:在设置为5个最大线程数的情况下,发送9个并发,理论上讲,应该需要两轮。
return testGrid();
Function testGrid();
begin
mtic;
r:=array();
for i:=0 to 8 do
if i<8 then
r[i]:=# sleepC(5);//10秒
else r[i]:=sleepC(5);//10秒
re:=array();
for j:=0 to length(r)-1 do
re[j]:=dupvalue(r[j]);
t:= mtoc;
echo "一个进程暂停5秒,共发送9个并发,总花费秒数为:",t;
echo tostn(re);
end;
Function sleepC(n);
begin
sleep(n*1000);
return n;
end;
执行结果:结果约大于10秒,5秒一轮,与设置为5个的网格效果对应,说明设置有效。
