У меня есть модель, как это:Python/PySide предел скорость обновления Model/View
class GeneralAssetIconModel(QtCore.QAbstractListModel):
def __init__(self, parent=None):
super(GeneralAssetIconModel, self).__init__(parent)
self._data = []
def rowCount(self, parent):
return len(self._data)
def data(self, index, role):
if role == QtCore.Qt.DecorationRole:
taskModel = self._data[index.row()]
ext = taskModel.getData().obj['type']['ext']
pix = QtGui.QPixmap(160, 160)
pix.load('Assets/thumbnail-default.jpg')
if ext == '.ma':
pass
if ext == '.psd':
pix = PhotoshopHelper.getLatestThumbnail(taskModel)
if ext == '.ai':
pix = IllustratorHelper.getLatestThumbnail(taskModel)
if ext == '.mra':
pix = MariHelper.getLatestThumbnail(taskModel)
if ext == '.indd':
pix = IndesignHelper.getLatestThumbnail(taskModel)
Проблема у меня в том, что функция «getLatestThumbnail» всегда считывает данные миниатюрного изображения из файла сервера и пытается отобразить его в представлении, и эта операция выполняется довольно медленно. И когда у меня есть 30 или более предметов, отображаемых в списке, все становится очень медленным и медленным.
Есть ли способ ограничить количество раз, когда данные запроса запрашивают данные модели?
Я предлагаю вам вместо этого изменить классы-помощники, чтобы они локально кэшировали эскизы. –
Я думал то же самое, но ограничение обновления было бы легким выходом. Возможно, просто обновите его один раз при начальной загрузке предметов. Но я не знаю, как контролировать поведение. @three_pineapples – d3cr1pt0r
Очень часто меняются эскизы? Если нет, вы можете хранить их локально и иметь способ их обновления по мере необходимости. Чтобы избежать какого-либо отставания, вы можете поместить этот метод обновления в отдельный поток. – Mel