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


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

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

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18058 威望:0 精华:0 注册:2011/11/26 20:21:00
[求助]多线程的问题  发帖心情 Post By:2019/2/15 21:36:00 [显示全部帖子]

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

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

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

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18058 威望: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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18058 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/15 22:31:00 [显示全部帖子]

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


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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18058 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/16 11:35:00 [显示全部帖子]

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


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

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18058 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/16 15:51:00 [显示全部帖子]

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

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



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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18058 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/17 12:14:00 [显示全部帖子]

我的代码是哪里有问题,总报出什么ID重复、OV关键字之类的错误。
步骤:
1、运行自定义函数:随机增加商品分类和库存明细
2、运行自定义函数AA

按11楼的方法计算出来的结果有错误。

例子中的是将商品的行数分开计算;如果是想开多个线程,分别计算数量、金额又该怎么做
[此贴子已经被作者于2019/2/17 18:12:08编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18058 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/18 15:09:00 [显示全部帖子]

多线程计算的结果存到临时表,再把临时表的数据更新到界面上应该可以吧

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18058 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/18 16:39:00 [显示全部帖子]

我只是为了统计一些数据,把统计结果展现在界面上。但同一个界面上要展示的列较多,想各开一个进程来计算它们而已。毕竟逐列计算的话,规则复杂,速度慢了体验太差 打个比方。现场要办理小材料的移交手续,物品上千种,要知道合同约定的有多少,后来调整了多次后总共调了多少,已经移交了多少,这样才知道还有多少可以移交,不能超量接收。那么计算调整量开一个进程,巳经移交了多少开一个进程。 这个例子中,各种物品分别经过多次调整总共调了多少,数据库表并不存储,已移交的量也是不存储的,需要时才即时计算
[此贴子已经被作者于2019/2/18 16:46:31编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18058 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/18 16:47:00 [显示全部帖子]

如果要达到这个目的应当咋解决?

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


加好友 发短信
等级:九尾狐 帖子:2198 积分:18058 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2019/2/20 22:32:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:多线程处理数据应当怎么设计.zip


其实,这里面的关键问题是:
1、商品目录行数太多,可能有4万行以上,甚至会比这个多得多
2、商品的入库每月统一做一次
3、商品的计划可能会调整多次(但一般不会超过5次),但并非每种商品都会调整,而且需要调整的商品目录占比不多,可能只会有商品目录的10%左右。
4、商品采购的总周期按项目执行的,而每个项目的周期最多也就是5年,也就是一种商品总共的入库记录只会有60条
5、所以,蓝版主所说的每个月把所有商品的累计采购数量、调整数量存起来,需要的时候直接取用,可能从这个应用场景来说,并不是很好。

以上只是举例子,实际的业务模型并不止只计算这两个数量,还有其它的一系列的计算,在这里举例是希望版主指点方法。
[此贴子已经被作者于2019/2/20 22:35:02编辑过]

 回到顶部
总数 30 1 2 3 下一页