当前位置: 首页 > news >正文

处理报文后 展示在qtdesigner界面 ,有大量数据存储 怎样创建临时文件减少内存占用

处理大量数据并将其展示在 Qt Designer 创建的界面中时,确实可能会遇到内存占用过高的问题。使用临时文件来存储和管理数据是一种有效的解决方案,可以帮助减少内存占用。

import os
import shutil
import tempfile
from PyQt5.QtWidgets import QApplication, QMainWindow, QListWidget, QVBoxLayout, QWidget# 数据处理函数
def process_data_in_chunks(data, chunk_size=1024 * 1024):"""将数据写入临时文件,并按块读取。:param data: 字节数据:param chunk_size: 每个块的大小(字节):return: 生成器,每次返回一个块的数据"""temp_dir = tempfile.mkdtemp()temp_file_path = Nonetry:# 创建临时文件并写入数据with tempfile.NamedTemporaryFile(dir=temp_dir, delete=False) as temp_file:temp_file.write(data)temp_file_path = temp_file.nameprint(f"临时文件路径: {temp_file_path}")with open(temp_file_path, 'rb') as f:while True:chunk = f.read(chunk_size)if not chunk:breakyield chunkexcept Exception as e:print(f"Error capturing packets: {e}")#finally:# 清理临时文件夹#shutil.rmtree(temp_dir)# 主窗口类
class MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle("Data Viewer")self.setGeometry(100, 100, 800, 600)self.list_widget = QListWidget(self)layout = QVBoxLayout()layout.addWidget(self.list_widget)container = QWidget()container.setLayout(layout)self.setCentralWidget(container)self.load_data_from_temp_files()def load_data_from_temp_files(self):temp_dir = tempfile.gettempdir()for chunk in process_data_in_chunks(byte_data):decoded_chunk = chunk.decode('utf-8', errors='ignore')self.list_widget.addItem(decoded_chunk)# 示例数据
text_data = "这是一个包含非ASCII字符的示例文本:你好,世界!"
byte_data = text_data.encode('utf-8')# 运行应用程序
if __name__ == "__main__":import sysapp = QApplication(sys.argv)# 创建主窗口实例window = MainWindow()window.show()# 启动事件循环sys.exit(app.exec_())
http://www.lryc.cn/news/483898.html

相关文章:

  • 后端-实现excel的导出功能(超详细讲解)
  • Docker compose部署portainer
  • 【游戏引擎之路】登神长阶(十四)——OpenGL教程:士别三日,当刮目相看
  • 相等日期问题(c++方法解决)
  • 深度学习——优化算法、激活函数、归一化、正则化
  • Android 老项目适配 Compose 混合开发
  • PH热榜 | 2024-11-14
  • 删库跑路,启动!
  • Vue 3 在现代前端开发中的应用
  • 【HarmonyOS】Hdc server port XXXX has been used.Configure environment variable
  • 使用 ts-node 运行 ts文件,启动 nodejs项目
  • scala中的case class
  • 探索 HTTP 请求方法:GET、POST、PUT、DELETE 等的用法详解
  • 前端项目中,public文件下的system.js有什么作用
  • odoo-040 odoo17前端的js方法调用后端py方法action报错
  • 图形 2.7 LDR与HDR
  • DP动态规划基础题(Kadane算法)
  • [UnLua]动态创建SceneCapture2d相机,并且添加渲染目标纹理
  • 【leetcode练习·二叉树】用「分解问题」思维解题 I
  • 【gitlab-ce】各组件介绍
  • PostgreSQL分区表:基础语法与运维实践
  • Docker入门系列——DockerFile的使用
  • 数据集平台分享
  • 去地面算法——depth_clustering算法调试(1)
  • 设计模式-七个基本原则之一-单一职责原则 + SpringBoot案例
  • HWA高速辅助驾驶系统组成及功能场景
  • SpringMVC学习笔记(一)
  • kaggle 如何利用API下载数据集
  • 第一个 Flutter 项目(1)共46节
  • 学术论文写作丨机器学习与深度学习