MyEMS开源能源管理系统核心代码解读021
MyEMS开源能源管理系统适用于建筑、工厂、商场、医院、园区的电、水、气等能源数据采集、分析、报表,还有光伏、储能、充电桩、微电网、设备控制、故障诊断、工单管理、人工智能优化等可选功能。资深专业团队开发维护,保障长期支持。用开源助力企业集团、产业园区、能源运营商低碳发展!
官网 :https://myems.io
MyEMS开源社区版下载:https://gitee.com/myems/myems
本期解读:
空间能耗分项数据汇总计算方法:myems-aggregation/space_energy_input_item.py
这段代码是一个用于处理能源数据的Python脚本,主要功能是计算和聚合特定空间(如建筑物中的房间或区域)的能源输入数据。它通过与MySQL数据库交互来获取和存储数据,并使用多进程来提高处理效率。下面是对代码的概括性总结和详细解析:
概括性总结
1.主函数 (main): 循环执行,首先从系统数据库中获取所有空间的列表,然后使用多进程方式调用worker函数处理每个空间。每轮循环结束后休眠一段时间。
2.工作函数 (worker): 对于给定的空间,该函数执行多个步骤来聚合该空间的能源输入数据。这包括从系统数据库中获取与该空间相关的各种能源计量设备(如实际计量表、虚拟计量表、离线计量表等),然后从能源数据库中获取这些设备的能源数据,最后聚合这些数据并保存回能源数据库。
详细解析
1.连接数据库: 使用mysql.connector连接到MySQL数据库,分别操作系统数据库和能源数据库。
2.获取空间列表: 从系统数据库中查询所有空间,并将它们存储在一个列表中。
3.多进程处理: 使用Python的multiprocessing.Pool来并行处理每个空间,以提高效率。
4.空间能源数据处理:
- 获取与空间相关的各种能源计量设备列表。
- 确定聚合数据的起始和结束时间。
- 从能源数据库中获取这些设备的能源数据。
- 确定所有设备的共同时间段,以便进行数据聚合。
- 按能源项目和小时聚合能源数据。
- 将聚合后的数据保存回能源数据库。
5.错误处理和日志记录: 在每个步骤中,如果遇到异常,则记录错误信息,并在必要时关闭数据库连接。
6.休眠和重试机制: 在无法连接数据库或处理数据时,脚本会休眠一段时间后重试。
MyEMS开源能源管理系统核心代码解读021的更多相关文章
- 优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案
简介 本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发 ...
- Hybrid----优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案-备
本篇为大家介绍一个优秀的开源小项目:WebViewJavascriptBridge. 它优雅地实现了在使用UIWebView时JS与ios 的ObjC nativecode之间的互调,支持消息发送.接 ...
- itest 开源测试管理项目中封装的下拉列表小组件:实现下拉列表使用者前后端0行代码
导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景 像easy ui 之类的纯前端组件,也有下拉列表组件,但是使用的时候,每个下拉列表,要配一个URL ...
- 腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一)
腾讯开源的 Paxos库 PhxPaxos 代码解读---Accept阶段(一) 在看Accept阶段代码之前, 我们再回想一下 Basic Paxos算法; 1. Basic Paxos 算法是为 ...
- Android MVP模式 谷歌官方代码解读
Google官方MVP Sample代码解读 关于Android程序的构架, 当前(2016.10)最流行的模式即为MVP模式, Google官方提供了Sample代码来展示这种模式的用法. Repo ...
- msysGit管理GitHub代码
msysGit管理GitHub代码 代码的管理,在日常开发中是很重要的环节,程序员的修炼三部曲——版本控制,单元测试,项目自动化. 本篇就简单的说说通过msysGit来管理GitHub中的代码,实 ...
- C/C++ 开源库及示例代码
C/C++ 开源库及示例代码 Table of Contents 说明 1 综合性的库 2 数据结构 & 算法 2.1 容器 2.1.1 标准容器 2.1.2 Lockfree 的容器 2.1 ...
- Google免费的SVN服务器管理VS2010代码
原文:Google免费的SVN服务器管理VS2010代码 前言 Google免费为我们提供了代码管理的SVN服务器.首先我这里用的Win7 64的电脑系统,用VS2010进行的代码开发.这里管理代码需 ...
- spring JdbcTemplate 在itest 开源测试管理项目中的浅层(5个使用场景)封装
导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景, 在做项目的时候,用的JPA ,有些复杂查询,比如报表用原生的JdbcTemplate ,很不方便;传参也不方便 ...
- weex官方demo weex-hackernews代码解读(上)
一.介绍 weex 是阿里出品的一个类似RN的框架,可以使用前端技术来开发移动应用,实现一份代码支持H5,IOS和Android.最新版本的weex已默认将vue.js作为前端框架,而weex-hac ...
随机推荐
- Docker安装运行报错wsl问题排查方案
Docker运行报错wsl问题排查方案 在window中安装运行Docker Desktop时容易遇到有关wsl的报错问题,这里给出几个排查解决的方法用于记录. 排查步骤如下: 一.开启虚拟化问题 1 ...
- etcd空间配额2G限制优化
一.简单说明 etcd的数据库空间配额大小默认限制为2G,当数据达到2G的时候就不允许写入.这里如果想继续写入,必须对历史数据进行压缩,或者调整etcd数据库的空间配额大小限制. 二.具体配置 当空间 ...
- [书籍精读]《你不知道的JavaScript(下卷)》精读笔记分享
写在前面 书籍介绍:JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解.本套书直面当前JavaSc ...
- 超赞!本地程序调用云知识库实现RAG功能
在 Spring AI Alibaba 程序中,我们可以直接使用本地程序调用百炼平台的云知识库,实现知识库文档解析.分块.向量化存储等一条龙服务. 这样,开发者就不用本地部署搭建向量数据库.不用进行复 ...
- MongoDB入门实战教程(9)
前面我们学习了如何套用常见的设计模式打造合适的模型设计,本篇我们来看看在MongoDB中如何使用索引来提高查询效率. 1 MongoDB也有索引? 在使用传统关系型数据库如MSSQL.MySQL等的时 ...
- webFlux入门
今天发现一个特别好的文章,是关于springBoot框架中响应式编程的,那下面就是这位博主所整理的一些干货 ---------------------------------------------- ...
- java基础——函数、数组、排序
函数的重载 函数的重载:在一个类中出现两个或者两个以上的同名函数,这个称作为函数的重载. 函数重载的作用: 同一个函数名可以出现了不同的函数,以应对不同个数或者不同数据类型的参数. 函数重载的要求: ...
- react 的 createContext 和useContext
创建一个上下文对象 // my-context.js import { createContext } from 'react'; export default createContext(null) ...
- jenkins部署前端vue、react
服务器安装node 无论是vue.react还是angular,node环境都是必须的. 我们使用nvm来安装node 服务器安装yarn 因为前端的包管理工具,现在大都需要yarn支持,比如我接下来 ...
- java 网格组布局
简介 GridBagLayout 网格组布局 java 核心编程 code /* * @Author: your name * @Date: 2020-11-08 12:48:42 * @LastEd ...