У меня есть данные с 1000 записями, отображаемыми в QTableWidget (13 столбцов), после обновления 4 раза я получаю setItem 52000 раз, а с использованием метода профиля pycharm время 52000 раз составляет 84 мс.
После выхода PySide2 (Qt для Python 5.11 середина мая) я изменяю только «от PyQt5 ... import ...» на «от PySide2 ... import ...» для моей программы, время для 52000 раз 3171ms.
Я знаю, что PyQt5 и PySide2 зависят от Qt5, но производительность шокировала. Я хочу использовать PySide2 для будущего с LGPL, как я могу это исправить?
#!/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_())