Foxtable(狐表)用户栏目专家坐堂 → [求助]多线程的问题


  共有5532人关注过本帖树形打印复制链接

主题:[求助]多线程的问题

帅哥哟,离线,有人找我吗?
chnfo
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]多线程的问题  发帖心情 Post By:2019/2/15 21:36:00 [只看该作者]

看到高级开发指南中的多线程,想起以前做的一个功能(只是类比举例,不代表真实应用,真实的计算模型比下面的例子复杂很多,而且数据量很大)
例如要展示商品的年度进货量、季度进货量、月进货量。
以前是按顺序计算年度、季度、月进货量,然后展现在界面表中,在数据量大的时候,耗时较长。

如果是多线程,是否可以同时开启三个线程来分别计算之后,再将结果合并到一个表中,然后展现到界面表中,这样耗时应当会减少一些。

那么,如果这样应用,要注意什么问题?
[此贴子已经被作者于2019/2/15 21:39:09编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zhy400137
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1131 积分:8199 威望:0 精华:0 注册:2013/11/3 19:00:00
  发帖心情 Post By:2019/2/15 21:50:00 [只看该作者]

mark

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106035 积分:539268 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/15 21:52:00 [只看该作者]

看:http://www.foxtable.com/mobilehelp/scr/277.htm

可以同时开12个线程,分别计算一个月的数据;或开4个线程,计算4个季度的数据

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/15 22:20:00 [只看该作者]

蓝兄误解我的意思了。
假如说现在是11月份。
我想知道的是各种商品的三个数字。一是年度累计(也就是1-11月的),二是第4季度(10-11月),三是月(单指11月的)

这时候就很难用for each 去开三个线程了。
如果要缩短计算时间,该如何处理?

直接这样?

Functions.AsyncExecute("年度累计")

Functions.AsyncExecute("季度累计")

Functions.AsyncExecute("月度累计")
[此贴子已经被作者于2019/2/15 22:26:08编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106035 积分:539268 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/15 22:26:00 [只看该作者]

就是这个意思。

如果数据量比较大,1-11月每月一个线程同时进行统计,全部统计后再加总,第4季度就是10-11月这2个月的计算结果汇总

如果数据量相对较小,按季度开线程计算即可

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/15 22:31:00 [只看该作者]

其实真实数据,并不是因为月份多,而是因为品类多(4万行)。
然后还有一些比较复杂的计算导致的。


 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106035 积分:539268 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/15 22:40:00 [只看该作者]

原理都是一样的啊,不管是按月,或是按品类、品牌。供应商....目的其实就是把把数据分成可以独立计算的小单位,放到线程里计算,然后再汇总。比如每1000个品类一个线程、某个供应商的品类一个线程、......

也可以每个月初把上个月的数据统计出来,把结果记录到表中,以后直接取计算结果,不需要每次都重新统计一次.........

方法有很多,达到目的就行,至于这个方法能不能用,试过才知道

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/16 11:35:00 [只看该作者]

比如每1000个品类一个线程、某个供应商的品类一个线程、......


如果要这样应用,全局变量、同步函数、异步函数该如何定义?这一块不是很好理解。

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106035 积分:539268 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/16 12:15:00 [只看该作者]

具体问题具体分析。如果如果这些品类都是各自计算,和其他品类没有交互,不需要什么全局变量、同步函数,直接计算把结果写入数据库即可。

如果是按月份计算,然后需要汇总,看看这个:http://www.foxtable.com/mobilehelp/scr/3270.htm,原理一样的

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/16 15:51:00 [只看该作者]

如附件所示(只是类比方法,删除了很多数据)。
Tbgoods是商品分类,TBRK是库存数据。
目的是要获得当前日期所在年度的数量、金额;季度的数量、金额;月份的数量、金额。

因为数据量可能比较大,类似的用多线程来应当怎么做呢?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多线程处理数据.zip



 回到顶部
总数 59 1 2 3 4 5 6 下一页