From 917a15c60cee498fdd20fb692f94951343e9402e Mon Sep 17 00:00:00 2001 From: Brett Williams Date: Wed, 25 Oct 2023 02:57:25 -0500 Subject: [PATCH] Make engine updating multithreaded --- src/engines/engine_manager.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/engines/engine_manager.py b/src/engines/engine_manager.py index 25b1e17..0ceda69 100644 --- a/src/engines/engine_manager.py +++ b/src/engines/engine_manager.py @@ -1,6 +1,7 @@ import logging import os import shutil +import threading from src.engines.blender.blender_downloader import BlenderDownloader from src.engines.blender.blender_engine import Blender @@ -147,8 +148,7 @@ class EngineManager: @classmethod def update_all_engines(cls): - logger.info(f"Checking for updates for render engines...") - for engine, engine_downloader in cls.downloader_classes.items(): + def engine_update_task(engine, engine_downloader): logger.debug(f"Checking for updates to {engine}") latest_version = engine_downloader.find_most_recent_version() if latest_version: @@ -159,6 +159,15 @@ class EngineManager: else: logger.warning(f"Unable to get latest version for {engine}") + logger.info(f"Checking for updates for render engines...") + threads = [] + for engine, engine_downloader in cls.downloader_classes.items(): + thread = threading.Thread(target=engine_update_task, args=(engine, engine_downloader)) + threads.append(thread) + thread.start() + + for thread in threads: # wait to finish + thread.join() if __name__ == '__main__': logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')