FAQ > 金融建模 > 建模问题 > 平台使用

Q:本地化脚本网格#的多线程调用支持使用说明    

  • 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个的网格效果对应,说明设置有效。