python 共享内存(注册、写入、读取)

python 复制代码
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from UI.ui_shareMmap import Ui_ShareMServiceDlg  # 导入UI类
import mmap


class QMainDialog(QDialog, Ui_ShareMServiceDlg):  # 修改点(UI类)
    def __init__(self, parent=None):
        super().__init__(parent)
        self.ui = Ui_ShareMServiceDlg()  # 修改点(UI类)
        self.ui.setupUi(self)  # 构造UI

        # 内存名称
        self.targetName = 'ShareMemoryTest'
        self.ui.editTagetName.setText(self.targetName)
        # 内存写入值
        self.shareValue = '201400027'
        self.ui.editValue.setText(self.shareValue)
        # 映射文件对象
        self.mmap_file = None

    @pyqtSlot()
    def on_btnRegister_clicked(self):
        print("注册")

        try:
            self.targetName = self.ui.editTagetName.toPlainText()

            # 注册内存目标
            self.mmap_file = mmap.mmap(0, 1024, access=mmap.ACCESS_WRITE, tagname=self.targetName)
            self.ui.labelResult.setText('注册成功')
        except Exception as e:
            print(e)
            self.ui.labelResult.setText('注册失败')

    @pyqtSlot()
    def on_btnWrite_clicked(self):
        print("写入")
        try:
            # 从界面获取 设置的值
            code_text = self.ui.editValue.toPlainText()
            code_text_b = code_text.encode('utf-8')

            # 写入设置的值
            self.mmap_file.seek(0)
            self.mmap_file.write(code_text_b)

            print(code_text)
            self.ui.labelResult.setText('写入成功')
        except Exception as e:
            print(e)
            self.ui.labelResult.setText('写入失败')

    @pyqtSlot()
    def on_btnRead_clicked(self):
        print("读取")
        try:
            # 读取内存中的值
            self.mmap_file.seek(0)
            info_str = self.mmap_file.read().translate(None, b'\x00').decode()

            # 设置到界面
            print(info_str)
            self.ui.editValue.setText(info_str)

            self.ui.labelResult.setText('读取成功')
        except Exception as e:
            print(e)
            self.ui.labelResult.setText('读取失败')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main_form = QMainDialog()
    main_form.show()

    sys.exit(app.exec_())
相关推荐
luthane12 分钟前
python 实现markov chain马尔可夫链算法
开发语言·python·算法
北巷!!20 分钟前
面试系列-分组Tire树匹配算法
python·算法·面试
玩转测试开发24 分钟前
美化pytest运行:pytest-sugar
python·pytest
RS&26 分钟前
Convert latitude, longitude & altitude to local ENU coordinates
python
PyAIGCMaster44 分钟前
文本到语音或视频的构想
python
scutrobot1 小时前
ACT调试pycharm报错
ide·python·pycharm
小张贼嚣张1 小时前
Pycharm里设置关于designer.exe以及pyuic5.exe的外部工具
python·pycharm·pyqt
luthane1 小时前
python 实现A*(A-Star)算法
开发语言·python·算法
_.Switch1 小时前
深度学习中的迁移学习:预训练模型微调与实践
人工智能·python·深度学习·神经网络·机器学习·迁移学习
2,4(1H,3H)-PD are mine2 小时前
python脚本实现Redis未授权访问漏洞利用
数据库·redis·python·反弹连接