MyEMS开源能源管理系统适用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力企业集团、产业园区、能源运营商低碳发展!

本期解读:

空间能源产出汇总计算方法:myems-aggregation/space_energy_output_category.py

源代码链接:https://gitee.com/myems/myems/blob/master/myems-normalization/virtualpoint.py?sessionid=1992803748

总体概述

1.主函数 (main): ** 循环执行,首先从系统数据库中获取所有空间的列表,然后使用多进程池并行处理每个空间。

2.
工作函数 (worker)* 为每个空间执行一系列步骤,包括获取与该空间相关的设备、子空间和能源数据,然后按小时和能源类别聚合这些数据。

主函数 (main) 详解

1.连接数据库: 尝试连接到系统数据库,获取所有空间信息。

2.获取空间列表: 从数据库中查询所有空间,并按ID排序。

3.多进程处理: 使用Python的multiprocessing.Pool创建进程池,并行调用worker函数处理每个空间。

4.错误处理和日志记录: 如果在处理过程中遇到错误,记录错误并继续处理其他空间。

5.休眠和重复: 每轮处理完成后,程序休眠一段时间(例如0秒),然后重复上述过程。

工作函数 (worker) 详解

1.获取与空间相关的设备: 查询与当前空间关联的所有组合设备和单独设备。

2.获取子空间: 查询当前空间的所有子空间。

3.确定聚合的时间范围: 确定开始和结束时间,用于聚合能源数据。

4.获取能源数据: 对于每个组合设备、单独设备和子空间,从能源数据库中获取相应的能源输出数据。

5.确定共同时间段: 确定所有设备共有的时间段,以便进行数据聚合。

6.数据聚合: 按小时和能源类别聚合能源数据。

7.保存聚合数据: 将聚合后的数据保存回能源数据库。

总体来说,这段代码是一个复杂的数据处理脚本,用于从多个来源收集和聚合能源数据,以便进行进一步的分析和报告。

MyEMS开源能源管理系统核心代码解读024的更多相关文章

  1. 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案

    简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...

  2. Hybrid----优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案-备

    本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发送.接 ...

  3. itest 开源测试管理项目中封装的下拉列表小组件:实现下拉列表使用者前后端0行代码

    导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景       像easy ui 之类的纯前端组件,也有下拉列表组件,但是使用的时候,每个下拉列表,要配一个URL ...

  4. 腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一)

    腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一) 在看Accept阶段代码之前, 我们再回想一下 Basic Paxos算法; 1.  Basic Paxos 算法是为 ...

  5. Android MVP模式 谷歌官方代码解读

    Google官方MVP Sample代码解读 关于Android程序的构架, 当前(2016.10)最流行的模式即为MVP模式, Google官方提供了Sample代码来展示这种模式的用法. Repo ...

  6. msysGit管理GitHub代码

    msysGit管理GitHub代码   代码的管理,在日常开发中是很重要的环节,程序员的修炼三部曲——版本控制,单元测试,项目自动化. 本篇就简单的说说通过msysGit来管理GitHub中的代码,实 ...

  7. C/C++ 开源库及示例代码

    C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...

  8. Google免费的SVN服务器管理VS2010代码

    原文:Google免费的SVN服务器管理VS2010代码 前言 Google免费为我们提供了代码管理的SVN服务器.首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发.这里管理代码需 ...

  9. spring JdbcTemplate 在itest 开源测试管理项目中的浅层(5个使用场景)封装

    导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景, 在做项目的时候,用的JPA ,有些复杂查询,比如报表用原生的JdbcTemplate ,很不方便;传参也不方便 ...

  10. weex官方demo weex-hackernews代码解读(上)

    一.介绍 weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.最新版本的weex已默认将vue.js作为前端框架,而weex-hac ...

随机推荐

  1. MySQL 8 修改登录密码

      本文使用的版本是8.0.28 MySQL Community Server.修改MySQL 账号的密码分为两步,第一步是众人皆知的登录,第二步是修改密码. 账号登录   不登录是什么事情都做不了的 ...

  2. git提示:There is no tracking information for the current branch

    问题 使用git pull拉取远程分支代码的时候,提示: > There is no tracking information for the current branch. Please sp ...

  3. Intellij IDEA插件Free Mybatis plugin

    Free Mybatis plugin这个Intellij IDEA里面的插件真的十分nice,不仅可以实现XML文件与Mapper接口相互跳转,还可以逆向生成mapper和类. 直接在IDEA插件搜 ...

  4. 2023人形全能赛v831代码(包括YOLOv2识别和扫码以及颜色识别)

    v831 import time, math from maix import nn, camera, display, image import serial class YOLOv2: def _ ...

  5. 「Note」CF 套题

    最后一次添加的题目:CF1572C CF *2000-*2100 \(\color{blueviolet}{CF771C}\) 非常好题目啊. 首先考虑题目让你求的到底是个什么东西,不难看出 \(f( ...

  6. k8s servicemonitor 采集超时配置

    背景说明 我们有时候在编写exporter时,其中某个采集的metrics接口获取数据很慢,可能需要达到10-20S,基于此种情况,如果我们按照ServiceMonitor默认的配置进行,这里默认sc ...

  7. mysql字符集插入中文报错

    org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: java.sql.SQLE ...

  8. 案例分析——HyperWorks练习做模型简化

    Step 01:载入模型 Exercise_2b.hm.   图 2-20 Exercise_2b 模型alt="Exercise_2b 模型" Step 02:去除曲边导角. ( ...

  9. HDFS目录配额(quota)不足导致写文件失败

    本文分享自天翼云开发者社区<HDFS目录配额(quota)不足导致写文件失败>,作者:5****m 问题背景与现象 给某目录设置quota后,往目录中写文件失败,出现如下问题"T ...

  10. Java集合-Collection详解

    基础知识: 什么是集合? 集合是一个容器.把多个对象放入容器中.有一个水杯,你可以选择把水不断往里装,也可以选择装牛奶.但是不能两种不同的东西混合装一个杯子.集合这个容器里装的一定是同一类型的东西.( ...