|
本帖最后由 hlhhcs 于 2023-9-20 13:44 编辑
10万条数据,不用线程计算要1分半完成,用了多线程,把数据分段计算,比如一个线程计算一万条,10个线程,时间要5分钟。
要是开1个线程在后台计算也要好几分钟。是我的思路有问题还是什么情况?
数据载入 () 计算行数 = 60000 计次循环首 (2, i )多线程 [i ]. 创建 (&任务, i - 1, , , , , 真, , , )计次循环尾 () 进度条1.位置 = 0 购电合计 = 0 铝侧负荷 = 到小数 (编辑框_铝侧负荷.内容 )联络线容量 = 到小数 (编辑框_联络线容量.内容 )m = 0 计次循环首 (计算行数, i )j = 计算行数 × 参数 + i 如果真 (总行数 - 1 = j )信息框 (“跳出行:” + 到文本 (j ), 0, , )跳出循环 () 日期 = 数据集 [j ].日期 机组3_6最小 = 机组合计3_6最小 (日期 )机组7_10最小 = 机组合计7_10最小 (日期 )机组3_6最大 = 机组合计3_6最大 (日期 )机组7_10最大 = 机组合计7_10最大 (日期 ) 新能源实发 = 数据集 [j ].风电 + 数据集 [j ].光伏 区间 = “全时”如果真 (取小时 (日期 ) ≥ 22 或 取小时 (日期 ) < 5 ) 区间 = “谷时”小机应出力 = 铝侧负荷 - 新能源实发 - 机组7_10最大 如果 (小机应出力 > 0 )如果真 (小机应出力 ≤ 机组3_6最小 )购电 = 0 如果真 (小机应出力 > 机组3_6最小 且 小机应出力 ≤ 机组3_6最大 )应购电 = 小机应出力 - 机组3_6最小 如果 (应购电 > 联络线容量 )购电 = 联络线容量 购电 = 应购电 如果真 (小机应出力 > 机组3_6最大 )应购电 = 小机应出力 - 机组3_6最大 如果 (应购电 > 联络线容量 )购电 = 0 购电 = 联络线容量 - 应购电 购电 = 0 弃风电量 = 0 如果真 (购电 = 0 ) . A = 铝侧负荷 - 新能源实发 如果 (A < 机组3_6最小 + 机组7_10最小 )弃风电量 = 机组3_6最小 + 机组7_10最小 - A 输出调试文本 (“弃风:” + 到文本 (弃风电量 )) 弃风电量 = 0 临界许可. 进入 () 如果真 (区间 = “谷时”)谷时购电合计 = 谷时购电合计 + 购电 ÷ 120 风光电量合计 = 风光电量合计 + 新能源实发 ÷ 120 全时购电合计 = 全时购电合计 + 购电 ÷ 120 弃风电量合计 = 弃风电量合计 + 弃风电量 ÷ 120 m = m + 0.1 如果真 (m ≥ 1 )进度条1.位置 = 进度条1.位置 + 1 m = 0 编辑框_谷时购电.内容 = 到文本 (四舍五入 (谷时购电合计, 2 )) 编辑框_弃风电量.内容 = 到文本 (四舍五入 (弃风电量合计, 2 )) 编辑框_风光电量.内容 = 到文本 (四舍五入 (风光电量合计, 2 )) 编辑框_全时购电.内容 = 到文本 (四舍五入 (全时购电合计, 2 )) 编辑框_弃风率.内容 = 到文本 (弃风电量合计 ÷ (风光电量合计 + 弃风电量合计 )) 编辑框_计算日期.内容 = 到文本 (日期 )临界许可. 退出 ()如果真 (购电 ≠ 0 )编辑框_谷时购电. 刷新显示 ()编辑框_全时购电. 刷新显示 ()如果真 (弃风电量 ≠ 0 )编辑框_弃风电量. 刷新显示 ()编辑框_弃风率. 刷新显示 ()编辑框_风光电量. 刷新显示 ()编辑框_计算日期. 刷新显示 ()计次循环尾 ()信息框 (“线程结束:” + 到文本 (参数 ), 0, , )
|
|