开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 845|回复: 10
收起左侧

[讨论] 多线程使用问题

[复制链接]
结帖率:100% (9/9)
发表于 2023-9-20 11:19:55 | 显示全部楼层 |阅读模式   内蒙古自治区通辽市
本帖最后由 hlhhcs 于 2023-9-20 13:44 编辑

10万条数据,不用线程计算要1分半完成,用了多线程,把数据分段计算,比如一个线程计算一万条,10个线程,时间要5分钟。
要是开1个线程在后台计算也要好几分钟。是我的思路有问题还是什么情况?


  
数据载入 ()
' 信息框 (“载入数据” + 到文本 (取数组成员数 (数据集)), 0, , )
计算行数 = 60000
' 进度条1.最大位置 = 总行数 ÷ 10
计次循环首 (2, i)
多线程 [i].创建 (&任务, i - 1, , , , , 真, , , )
计次循环尾 ()
  
子程序名返回值类型公开备 注
任务  
参数名类 型参考可空数组备 注
参数整数型
变量名类 型静态数组备 注
i整数型 
进度条1.位置 = 0
购电合计 = 0
铝侧负荷 = 到小数 (编辑框_铝侧负荷.内容)
联络线容量 = 到小数 (编辑框_联络线容量.内容)
m = 0
计次循环首 (计算行数, i)
j = 计算行数 × 参数 + i
如果真 (总行数 - 1 = j)
信息框 (“跳出行:”到文本 (j), 0, , )
跳出循环 ()

' 日期 = 到时间 (工作表.取单元格内容 (j, 0))
日期 = 数据集 [j].日期
' 信息框 (工作表.取单元格内容 (i, 0), 0, , )
' 返回 ()
机组3_6最小 = 机组合计3_6最小 (日期)
机组7_10最小 = 机组合计7_10最小 (日期)
机组3_6最大 = 机组合计3_6最大 (日期)
机组7_10最大 = 机组合计7_10最大 (日期)
' 新能源实发 = 到小数 (工作表.取单元格内容 (j, 1)) + 到小数 (工作表.取单元格内容 (j, 2))
新能源实发 = 数据集 [j].风电 + 数据集 [j].光伏
区间 = “全时”
如果真 (取小时 (日期) ≥ 22 取小时 (日期) < 5)  ' 谷
区间 = “谷时”

小机应出力 = 铝侧负荷 - 新能源实发 - 机组7_10最大
如果 (小机应出力 > 0)
如果真 (小机应出力 ≤ 机组3_6最小)
购电 = 0

如果真 (小机应出力 > 机组3_6最小 小机应出力 ≤ 机组3_6最大)
应购电 = 小机应出力 - 机组3_6最小
如果 (应购电 > 联络线容量)
购电 = 联络线容量


购电 = 应购电


如果真 (小机应出力 > 机组3_6最大)
应购电 = 小机应出力 - 机组3_6最大
如果 (应购电 > 联络线容量)
购电 = 0


购电 = 联络线容量 - 应购电





购电 = 0

弃风电量 = 0
如果真 (购电 = 0)
' 新能源应发 = 铝侧负荷 - 机组3_6最小 - 机组7_10最小
. ' 如果 (新能源应发 > 新能源实发 + 0)
' 弃风电量 = 0


' 弃风电量 = 新能源实发 - 新能源应发 + 0

A = 铝侧负荷 - 新能源实发
如果 (A < 机组3_6最小 + 机组7_10最小)
弃风电量 = 机组3_6最小 + 机组7_10最小 - A
输出调试文本 (“弃风:”到文本 (弃风电量))


弃风电量 = 0


临界许可.进入 ()
' 编辑框1.内容 = 到文本 (j)
如果真 (区间 = “谷时”)
谷时购电合计 = 谷时购电合计 + 购电 ÷ 120

风光电量合计 = 风光电量合计 + 新能源实发 ÷ 120
全时购电合计 = 全时购电合计 + 购电 ÷ 120
弃风电量合计 = 弃风电量合计 + 弃风电量 ÷ 120
m = m + 0.1
如果真 (m ≥ 1)
进度条1.位置 = 进度条1.位置 + 1
m = 0

编辑框_谷时购电.内容 = 到文本 (四舍五入 (谷时购电合计, 2))
编辑框_弃风电量.内容 = 到文本 (四舍五入 (弃风电量合计, 2))
编辑框_风光电量.内容 = 到文本 (四舍五入 (风光电量合计, 2))
编辑框_全时购电.内容 = 到文本 (四舍五入 (全时购电合计, 2))
编辑框_弃风率.内容 = 到文本 (弃风电量合计 ÷ (风光电量合计 + 弃风电量合计))
编辑框_计算日期.内容 = 到文本 (日期)
临界许可.退出 ()
如果真 (购电 ≠ 0)
编辑框_谷时购电.刷新显示 ()
编辑框_全时购电.刷新显示 ()

如果真 (弃风电量 ≠ 0)
编辑框_弃风电量.刷新显示 ()
编辑框_弃风率.刷新显示 ()

编辑框_风光电量.刷新显示 ()
编辑框_计算日期.刷新显示 ()
计次循环尾 ()
信息框 (“线程结束:”到文本 (参数), 0, , )

结帖率:100% (9/9)

签到天数: 4 天

 楼主| 发表于 2023-9-21 09:18:51 | 显示全部楼层   内蒙古自治区通辽市
cherryy 发表于 2023-9-20 14:45
感觉每次加了 临界许可 就会变慢 跟单线程没区别 ,这个问题很多人都遇到 像你写的这个明显是写法问题 ...

去掉许可改成1个线程,依然慢
回复 支持 反对

使用道具 举报

结帖率:97% (67/69)

签到天数: 25 天

发表于 2023-9-21 09:09:41 | 显示全部楼层   安徽省马鞍山市
hlhhcs 发表于 2023-9-21 08:56
你说这个我没太懂啊

你多线程写的有很大问题,同时你的临界许可里面加入了很多全局变量以及操作空间的代码,这些都会延缓速度的
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)

签到天数: 4 天

 楼主| 发表于 2023-9-21 08:56:58 | 显示全部楼层   内蒙古自治区通辽市
气质征服一切 发表于 2023-9-20 11:43
线程的数量要根据你当前的cpu来开线程,这样就避免了线程切换导致消耗资源,这也是为什么哪怕你线程开多了 ...

你说这个我没太懂啊
回复 支持 反对

使用道具 举报

结帖率:99% (87/88)

签到天数: 8 天

发表于 2023-9-20 14:45:13 | 显示全部楼层   海南省海口市
感觉每次加了 临界许可 就会变慢 跟单线程没区别 ,这个问题很多人都遇到 像你写的这个明显是写法问题
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)

签到天数: 4 天

 楼主| 发表于 2023-9-20 13:45:04 | 显示全部楼层   内蒙古自治区通辽市
上传了代码
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)

签到天数: 4 天

 楼主| 发表于 2023-9-20 13:32:56 | 显示全部楼层   内蒙古自治区通辽市
风清云游 发表于 2023-9-20 12:59
思路不至于慢这么多
这怕是说不过去...
感觉代码有问题

也不对,我开一个线程,这样就不涉及到切换线程问题,差将近3倍速度
回复 支持 反对

使用道具 举报

结帖率:81% (17/21)

签到天数: 18 天

发表于 2023-9-20 13:10:04 | 显示全部楼层   上海市上海市
我猜是不是 有可能 是这样的,10个线程,每个线程一个许可证emmm到最后还是单线程,因为许可证和原子控制的加入导致性能还不如单线程
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 7 天

发表于 2023-9-20 12:59:45 | 显示全部楼层   重庆市重庆市
气质征服一切 发表于 2023-9-20 11:43
线程的数量要根据你当前的cpu来开线程,这样就避免了线程切换导致消耗资源,这也是为什么哪怕你线程开多了 ...

思路不至于慢这么多
这怕是说不过去...
感觉代码有问题
回复 支持 反对

使用道具 举报

结帖率:97% (67/69)

签到天数: 25 天

发表于 2023-9-20 11:43:30 | 显示全部楼层   安徽省马鞍山市
下次有疑问记得发到问答区
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表