From cf9514bb576bc3d10a0a852ce97f3191f28683ee Mon Sep 17 00:00:00 2001 From: Inso <insomniak.fr@gmail.com> Date: Fri, 29 Jan 2016 22:36:06 +0100 Subject: [PATCH] Fasten up models list refresh with asyncio.gather --- src/sakia/models/identities.py | 8 ++++++-- src/sakia/models/txhistory.py | 17 +++++++++++------ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/sakia/models/identities.py b/src/sakia/models/identities.py index c49e44f8..ef721155 100644 --- a/src/sakia/models/identities.py +++ b/src/sakia/models/identities.py @@ -149,9 +149,13 @@ class IdentitiesTableModel(QAbstractTableModel): self.endResetModel() self.beginResetModel() identities_data = [] + requests_coro = [] for identity in identities: - data = await self.identity_data(identity) - identities_data.append(data) + coro = asyncio.ensure_future(self.identity_data(identity)) + requests_coro.append(coro) + + identities_data = await asyncio.gather(*requests_coro) + if len(identities) > 0: try: parameters = await self.community.parameters() diff --git a/src/sakia/models/txhistory.py b/src/sakia/models/txhistory.py index a463b6af..79b6d74e 100644 --- a/src/sakia/models/txhistory.py +++ b/src/sakia/models/txhistory.py @@ -300,17 +300,22 @@ class HistoryTableModel(QAbstractTableModel): self.beginResetModel() transfers_data = [] if self.community: + requests_coro = [] for transfer in self.transfers(): - data = None + coro = None if type(transfer) is Transfer: if transfer.metadata['issuer'] == self.account.pubkey: - data = await self.data_sent(transfer) + coro = asyncio.ensure_future(self.data_sent(transfer)) else: - data = await self.data_received(transfer) + coro = asyncio.ensure_future(self.data_received(transfer)) elif type(transfer) is dict: - data = await self.data_dividend(transfer) - if data: - transfers_data.append(data) + coro = asyncio.ensure_future(self.data_dividend(transfer)) + if coro: + requests_coro.append(coro) + + data_list = await asyncio.gather(*requests_coro) + for data in data_list: + transfers_data.append(data) self.transfers_data = transfers_data self.endResetModel() -- GitLab