From 1565d418e9b7db4521319897594292aca8fdb2fd Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Tue, 6 Aug 2019 19:08:34 -0300 Subject: [PATCH] improvement: suggestions are now retrieved asynchronously --- CHANGELOG.md | 4 +++- fpakman/core/controller.py | 19 ++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 786987c4..8be05b62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [0.5.1] +### Improvements: +- suggestions are now retrieved asynchronously. Response time takes 45% less. ### Fixes: -- flatpak dependency +- [flatpak dependency](https://github.com/vinifmor/fpakman/issues/36) ## [0.5.0] - 2019-08-06 ### Improvements diff --git a/fpakman/core/controller.py b/fpakman/core/controller.py index 065dba1b..6e40e2e2 100755 --- a/fpakman/core/controller.py +++ b/fpakman/core/controller.py @@ -1,6 +1,7 @@ import time from abc import ABC, abstractmethod from argparse import Namespace +from threading import Thread from typing import List, Dict from fpakman.core.disk import DiskCacheLoader, DiskCacheLoaderFactory @@ -290,10 +291,22 @@ class GenericApplicationManager(ApplicationManager): return warnings + def _fill_suggestions(self, suggestions: list, man: ApplicationManager): + if self._is_enabled(man): + suggestions.extend(man.list_suggestions(6)) + def list_suggestions(self, limit: int) -> List[Application]: + ti = time.time() if self.managers: - suggestions = [] + suggestions, threads = [], [] for man in self.managers: - if self._is_enabled(man): - suggestions.extend(man.list_suggestions(6)) + t = Thread(target=self._fill_suggestions, args=(suggestions, man)) + t.start() + threads.append(t) + + for t in threads: + t.join() + + tf = time.time() - ti + print(tf) return suggestions