为什么SetQttableWidget的性能比SetPy5快得多?

2024-05-15 16:56:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我在QTableWidget(13列)中显示了1000条记录的数据,刷新4次后得到setItem 52000次,使用pycharm Profile方法,52000次的时间是84ms。 在PySide2发布之后(5月中旬python5.11的Qt),我只从“from PyQt5…”改为“从PyQt5。。。从PySide2导入…“到”。。。导入…“对于我的程序,52000次的时间是3171ms。 我知道PyQt5和PySide2都依赖Qt5,但是性能令人震惊。我想在LGPL中使用PySide2,如何修复它?在

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
from PySide2.QtWidgets import QApplication, QTableWidgetItem, QMainWindow, QTableWidget


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setGeometry(200, 300, 960, 540)
        self.table = QTableWidget()
        self.setCentralWidget(self.table)
        self.table.setRowCount(1000)
        self.horizontal_header = ["1", "2", "3", "4", "5", "6", "7",
                                  "8", "9", "10", "11", "12", "13"]
        self.table.setColumnCount(len(self.horizontal_header))
        self.table.setHorizontalHeaderLabels(self.horizontal_header)
        for i in range(4):
            self._run()
        raise NameError

    def _run(self):
        for row in range(1000):
            for column in range(13):
                item = QTableWidgetItem('1')
                self.table.setItem(row, column, item)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainwindow = MainWindow()
    mainwindow.show()
    sys.exit(app.exec_())

Tags: infromimportselfforsys时间table