From b8e531af960c391f1a6d66d8641f9606eda1b2e5 Mon Sep 17 00:00:00 2001 From: Chris Davoren Date: Fri, 20 Oct 2023 16:05:24 +1000 Subject: [PATCH] Cleaned up initialization process for SimulationThread. --- simulation/simulation_thread.py | 11 ++++------- trafficlightfrontend/apps.py | 8 ++------ 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/simulation/simulation_thread.py b/simulation/simulation_thread.py index 5c04e6c..59f1dfb 100644 --- a/simulation/simulation_thread.py +++ b/simulation/simulation_thread.py @@ -9,14 +9,11 @@ class SimulationThread(threading.Thread): instance = None @classmethod - def get_instance(cls, periods=None, start_time=None, run_time=None, time_factor=1.0): - if cls.instance is not None: - return cls.instance - - if periods is None: - raise ValueError("Periods parameter must be specified on first call") - + def initialize(cls, periods, start_time=None, run_time=None, time_factor=1.0): cls.instance = SimulationThread(periods, start_time, run_time, time_factor) + + @classmethod + def get_instance(cls, periods=None, start_time=None, run_time=None, time_factor=1.0): return cls.instance def __init__(self, periods, start_time, run_time, time_factor): diff --git a/trafficlightfrontend/apps.py b/trafficlightfrontend/apps.py index b46410e..720639f 100644 --- a/trafficlightfrontend/apps.py +++ b/trafficlightfrontend/apps.py @@ -6,11 +6,6 @@ from django.conf import settings from simulation import SimulationThread -def simulation(): - while True: - print("Simulation: {}".format(time.time())) - time.sleep(1.0) - class TrafficlightfrontendConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'trafficlightfrontend' @@ -29,6 +24,7 @@ class TrafficlightfrontendConfig(AppConfig): periods = json.load(open("periods.json")) - SimulationThread.get_instance(periods, start_time=datetime.time.fromisoformat("07:59"), time_factor=4.0).start() + SimulationThread.initialize(periods, start_time=datetime.time.fromisoformat("07:59"), time_factor=4.0) + SimulationThread.get_instance().start() TrafficlightfrontendConfig.initialized = True