From 1c6f869bab8fc5cc2a18036625e47f0609fe9ab7 Mon Sep 17 00:00:00 2001 From: Siddh Patel <47033295+siddhp1@users.noreply.github.com> Date: Sun, 2 Feb 2025 22:04:19 -0500 Subject: [PATCH 1/4] Add timing logs to workers --- .../cluster_estimation_worker.py | 13 +++++++++++++ modules/common | 2 +- modules/communications/communications_worker.py | 12 ++++++++++++ modules/data_merge/data_merge_worker.py | 13 +++++++++++++ modules/detect_target/detect_target_worker.py | 14 +++++++++++++- .../flight_interface/flight_interface_worker.py | 11 +++++++++++ modules/geolocation/geolocation_worker.py | 12 ++++++++++++ modules/video_input/video_input_worker.py | 12 ++++++++++++ 8 files changed, 87 insertions(+), 2 deletions(-) diff --git a/modules/cluster_estimation/cluster_estimation_worker.py b/modules/cluster_estimation/cluster_estimation_worker.py index 0f378625..23ef7979 100644 --- a/modules/cluster_estimation/cluster_estimation_worker.py +++ b/modules/cluster_estimation/cluster_estimation_worker.py @@ -4,6 +4,7 @@ import os import pathlib +import time from modules import detection_in_world from utilities.workers import queue_proxy_wrapper @@ -47,6 +48,8 @@ def cluster_estimation_worker( worker_controller: worker_controller.WorkerController How the main process communicates to this worker process. """ + start_time = time.time() + worker_name = pathlib.Path(__file__).stem process_id = os.getpid() result, local_logger = logger.Logger.create(f"{worker_name}_{process_id}", True) @@ -72,7 +75,13 @@ def cluster_estimation_worker( # Get Pylance to stop complaining assert estimator is not None + end_time = time.time() + + local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + while not controller.is_exit_requested(): + start_time = time.time() + controller.check_pause() input_data = input_queue.queue.get() @@ -99,3 +108,7 @@ def cluster_estimation_worker( continue output_queue.queue.put(value) + + end_time = time.time() + + local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") diff --git a/modules/common b/modules/common index 9acf88b4..c7ab98a7 160000 --- a/modules/common +++ b/modules/common @@ -1 +1 @@ -Subproject commit 9acf88b42dfdb145e7eabb1b09a55df102ee00ad +Subproject commit c7ab98a75be0f78c2c17084d30c7fce5708897ff diff --git a/modules/communications/communications_worker.py b/modules/communications/communications_worker.py index 3b25dc85..b1121c32 100644 --- a/modules/communications/communications_worker.py +++ b/modules/communications/communications_worker.py @@ -5,6 +5,7 @@ import os import pathlib import queue +import time from modules import object_in_world from . import communications @@ -27,6 +28,7 @@ def communications_worker( input_queue and output_queue are data queues. controller is how the main process communicates to this worker process. """ + start_time = time.time() worker_name = pathlib.Path(__file__).stem process_id = os.getpid() @@ -57,7 +59,13 @@ def communications_worker( # Get Pylance to stop complaining assert comm is not None + end_time = time.time() + + local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + while not controller.is_exit_requested(): + start_time = time.time() + controller.check_pause() input_data = input_queue.queue.get() @@ -84,3 +92,7 @@ def communications_worker( continue output_queue.queue.put(value) + + end_time = time.time() + + local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") diff --git a/modules/data_merge/data_merge_worker.py b/modules/data_merge/data_merge_worker.py index 989ed6e7..6e70cf7c 100644 --- a/modules/data_merge/data_merge_worker.py +++ b/modules/data_merge/data_merge_worker.py @@ -5,6 +5,7 @@ import os import pathlib import queue +import time from utilities.workers import queue_proxy_wrapper from utilities.workers import worker_controller @@ -31,6 +32,8 @@ def data_merge_worker( Merge work is done in the worker process as the queues and control mechanisms are naturally available. """ + start_time = time.time() + worker_name = pathlib.Path(__file__).stem process_id = os.getpid() result, local_logger = logger.Logger.create(f"{worker_name}_{process_id}", True) @@ -52,7 +55,13 @@ def data_merge_worker( local_logger.error("Queue timed out on startup", True) return + end_time = time.time() + + local_logger.info(f"{time.time()}: Setup took {end_time - start_time} seconds.") + while not controller.is_exit_requested(): + start_time = time.time() + controller.check_pause() detections: detections_and_time.DetectionsAndTime = detections_input_queue.queue.get() @@ -107,3 +116,7 @@ def data_merge_worker( assert merged is not None output_queue.queue.put(merged) + + end_time = time.time() + + local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") diff --git a/modules/detect_target/detect_target_worker.py b/modules/detect_target/detect_target_worker.py index 012bfe88..f33f132e 100644 --- a/modules/detect_target/detect_target_worker.py +++ b/modules/detect_target/detect_target_worker.py @@ -4,6 +4,7 @@ import os import pathlib +import time from modules import image_and_time from utilities.workers import queue_proxy_wrapper @@ -34,6 +35,8 @@ def detect_target_worker( input_queue and output_queue are data queues. controller is how the main process communicates to this worker process. """ + start_time = time.time() + worker_name = pathlib.Path(__file__).stem process_id = os.getpid() result, local_logger = logger.Logger.create(f"{worker_name}_{process_id}", True) @@ -53,7 +56,6 @@ def detect_target_worker( config, local_logger, ) - if not result: local_logger.error("Could not construct detector.") return @@ -61,7 +63,13 @@ def detect_target_worker( # Get Pylance to stop complaining assert detector is not None + end_time = time.time() + + local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + while not controller.is_exit_requested(): + start_time = time.time() + controller.check_pause() input_data = input_queue.queue.get() @@ -78,3 +86,7 @@ def detect_target_worker( continue output_queue.queue.put(value) + + end_time = time.time() + + local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") diff --git a/modules/flight_interface/flight_interface_worker.py b/modules/flight_interface/flight_interface_worker.py index 41610a73..3b7249b1 100644 --- a/modules/flight_interface/flight_interface_worker.py +++ b/modules/flight_interface/flight_interface_worker.py @@ -31,6 +31,7 @@ def flight_interface_worker( controller is how the main process communicates to this worker process. """ # TODO: Error handling + start_time = time.time() worker_name = pathlib.Path(__file__).stem process_id = os.getpid() @@ -57,7 +58,13 @@ def flight_interface_worker( home_position = interface.get_home_position() communications_output_queue.queue.put(home_position) + end_time = time.time() + + local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + while not controller.is_exit_requested(): + start_time = time.time() + controller.check_pause() time.sleep(period) @@ -73,3 +80,7 @@ def flight_interface_worker( command = input_queue.queue.get() # Pass the decision command to the flight controller interface.apply_decision(command) + + end_time = time.time() + + local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") diff --git a/modules/geolocation/geolocation_worker.py b/modules/geolocation/geolocation_worker.py index 0be882e0..e1e4a0dc 100644 --- a/modules/geolocation/geolocation_worker.py +++ b/modules/geolocation/geolocation_worker.py @@ -4,6 +4,7 @@ import os import pathlib +import time from modules import merged_odometry_detections from utilities.workers import queue_proxy_wrapper @@ -27,6 +28,7 @@ def geolocation_worker( controller is how the main process communicates to this worker process. """ # TODO: Handle errors better + start_time = time.time() worker_name = pathlib.Path(__file__).stem process_id = os.getpid() @@ -51,7 +53,13 @@ def geolocation_worker( # Get Pylance to stop complaining assert locator is not None + end_time = time.time() + + local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + while not controller.is_exit_requested(): + start_time = time.time() + controller.check_pause() input_data = input_queue.queue.get() @@ -68,3 +76,7 @@ def geolocation_worker( continue output_queue.queue.put(value) + + end_time = time.time() + + local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") diff --git a/modules/video_input/video_input_worker.py b/modules/video_input/video_input_worker.py index a3b8cf97..56538bc9 100644 --- a/modules/video_input/video_input_worker.py +++ b/modules/video_input/video_input_worker.py @@ -32,6 +32,8 @@ def video_input_worker( output_queue is the data queue. controller is how the main process communicates to this worker process. """ + start_time = time.time() + worker_name = pathlib.Path(__file__).stem process_id = os.getpid() result, local_logger = logger.Logger.create(f"{worker_name}_{process_id}", True) @@ -53,7 +55,13 @@ def video_input_worker( # Get Pylance to stop complaining assert input_device is not None + end_time = time.time() + + local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + while not controller.is_exit_requested(): + start_time = time.time() + controller.check_pause() time.sleep(period) @@ -63,3 +71,7 @@ def video_input_worker( continue output_queue.queue.put(value) + + end_time = time.time() + + local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") From 4e239ca7873d669717ab11529e674565ef1a540a Mon Sep 17 00:00:00 2001 From: Siddh Patel <47033295+siddhp1@users.noreply.github.com> Date: Sun, 16 Feb 2025 18:02:16 -0500 Subject: [PATCH 2/4] Improve variable naming --- .../cluster_estimation_worker.py | 16 ++++++++++------ modules/communications/communications_worker.py | 16 ++++++++++------ modules/data_merge/data_merge_worker.py | 14 ++++++++------ modules/detect_target/detect_target_worker.py | 16 ++++++++++------ .../flight_interface/flight_interface_worker.py | 16 ++++++++++------ modules/geolocation/geolocation_worker.py | 16 ++++++++++------ modules/video_input/video_input_worker.py | 16 ++++++++++------ 7 files changed, 68 insertions(+), 42 deletions(-) diff --git a/modules/cluster_estimation/cluster_estimation_worker.py b/modules/cluster_estimation/cluster_estimation_worker.py index 23ef7979..b028fdff 100644 --- a/modules/cluster_estimation/cluster_estimation_worker.py +++ b/modules/cluster_estimation/cluster_estimation_worker.py @@ -48,7 +48,7 @@ def cluster_estimation_worker( worker_controller: worker_controller.WorkerController How the main process communicates to this worker process. """ - start_time = time.time() + setup_start_time = time.time() worker_name = pathlib.Path(__file__).stem process_id = os.getpid() @@ -75,12 +75,14 @@ def cluster_estimation_worker( # Get Pylance to stop complaining assert estimator is not None - end_time = time.time() + setup_end_time = time.time() - local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + ) while not controller.is_exit_requested(): - start_time = time.time() + iteration_start_time = time.time() controller.check_pause() @@ -109,6 +111,8 @@ def cluster_estimation_worker( output_queue.queue.put(value) - end_time = time.time() + iteration_end_time = time.time() - local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Worker iteration took {iteration_end_time - iteration_start_time} seconds." + ) diff --git a/modules/communications/communications_worker.py b/modules/communications/communications_worker.py index b1121c32..fecc3f08 100644 --- a/modules/communications/communications_worker.py +++ b/modules/communications/communications_worker.py @@ -28,7 +28,7 @@ def communications_worker( input_queue and output_queue are data queues. controller is how the main process communicates to this worker process. """ - start_time = time.time() + setup_start_time = time.time() worker_name = pathlib.Path(__file__).stem process_id = os.getpid() @@ -59,12 +59,14 @@ def communications_worker( # Get Pylance to stop complaining assert comm is not None - end_time = time.time() + setup_end_time = time.time() - local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + ) while not controller.is_exit_requested(): - start_time = time.time() + iteration_start_time = time.time() controller.check_pause() @@ -93,6 +95,8 @@ def communications_worker( output_queue.queue.put(value) - end_time = time.time() + iteration_end_time = time.time() - local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Worker iteration took {iteration_end_time - iteration_start_time} seconds." + ) diff --git a/modules/data_merge/data_merge_worker.py b/modules/data_merge/data_merge_worker.py index 6e70cf7c..da9a15c7 100644 --- a/modules/data_merge/data_merge_worker.py +++ b/modules/data_merge/data_merge_worker.py @@ -32,7 +32,7 @@ def data_merge_worker( Merge work is done in the worker process as the queues and control mechanisms are naturally available. """ - start_time = time.time() + setup_start_time = time.time() worker_name = pathlib.Path(__file__).stem process_id = os.getpid() @@ -55,12 +55,12 @@ def data_merge_worker( local_logger.error("Queue timed out on startup", True) return - end_time = time.time() + setup_end_time = time.time() - local_logger.info(f"{time.time()}: Setup took {end_time - start_time} seconds.") + local_logger.info(f"{time.time()}: Setup took {setup_end_time - setup_start_time} seconds.") while not controller.is_exit_requested(): - start_time = time.time() + iteration_start_time = time.time() controller.check_pause() @@ -117,6 +117,8 @@ def data_merge_worker( output_queue.queue.put(merged) - end_time = time.time() + iteration_end_time = time.time() - local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Worker iteration took {iteration_end_time - iteration_start_time} seconds." + ) diff --git a/modules/detect_target/detect_target_worker.py b/modules/detect_target/detect_target_worker.py index f33f132e..e64b2264 100644 --- a/modules/detect_target/detect_target_worker.py +++ b/modules/detect_target/detect_target_worker.py @@ -35,7 +35,7 @@ def detect_target_worker( input_queue and output_queue are data queues. controller is how the main process communicates to this worker process. """ - start_time = time.time() + setup_start_time = time.time() worker_name = pathlib.Path(__file__).stem process_id = os.getpid() @@ -63,12 +63,14 @@ def detect_target_worker( # Get Pylance to stop complaining assert detector is not None - end_time = time.time() + setup_end_time = time.time() - local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + ) while not controller.is_exit_requested(): - start_time = time.time() + iteration_start_time = time.time() controller.check_pause() @@ -87,6 +89,8 @@ def detect_target_worker( output_queue.queue.put(value) - end_time = time.time() + iteration_end_time = time.time() - local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Worker iteration took {iteration_end_time - iteration_start_time} seconds." + ) diff --git a/modules/flight_interface/flight_interface_worker.py b/modules/flight_interface/flight_interface_worker.py index 3b7249b1..2cac9b00 100644 --- a/modules/flight_interface/flight_interface_worker.py +++ b/modules/flight_interface/flight_interface_worker.py @@ -31,7 +31,7 @@ def flight_interface_worker( controller is how the main process communicates to this worker process. """ # TODO: Error handling - start_time = time.time() + setup_start_time = time.time() worker_name = pathlib.Path(__file__).stem process_id = os.getpid() @@ -58,12 +58,14 @@ def flight_interface_worker( home_position = interface.get_home_position() communications_output_queue.queue.put(home_position) - end_time = time.time() + setup_end_time = time.time() - local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + ) while not controller.is_exit_requested(): - start_time = time.time() + iteration_start_time = time.time() controller.check_pause() @@ -81,6 +83,8 @@ def flight_interface_worker( # Pass the decision command to the flight controller interface.apply_decision(command) - end_time = time.time() + iteration_end_time = time.time() - local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Worker iteration took {iteration_end_time - iteration_start_time} seconds." + ) diff --git a/modules/geolocation/geolocation_worker.py b/modules/geolocation/geolocation_worker.py index e1e4a0dc..84c7e7a2 100644 --- a/modules/geolocation/geolocation_worker.py +++ b/modules/geolocation/geolocation_worker.py @@ -28,7 +28,7 @@ def geolocation_worker( controller is how the main process communicates to this worker process. """ # TODO: Handle errors better - start_time = time.time() + setup_start_time = time.time() worker_name = pathlib.Path(__file__).stem process_id = os.getpid() @@ -53,12 +53,14 @@ def geolocation_worker( # Get Pylance to stop complaining assert locator is not None - end_time = time.time() + setup_end_time = time.time() - local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + ) while not controller.is_exit_requested(): - start_time = time.time() + iteration_start_time = time.time() controller.check_pause() @@ -77,6 +79,8 @@ def geolocation_worker( output_queue.queue.put(value) - end_time = time.time() + iteration_end_time = time.time() - local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Worker iteration took {iteration_end_time - iteration_start_time} seconds." + ) diff --git a/modules/video_input/video_input_worker.py b/modules/video_input/video_input_worker.py index 56538bc9..5bd3f5b5 100644 --- a/modules/video_input/video_input_worker.py +++ b/modules/video_input/video_input_worker.py @@ -32,7 +32,7 @@ def video_input_worker( output_queue is the data queue. controller is how the main process communicates to this worker process. """ - start_time = time.time() + setup_start_time = time.time() worker_name = pathlib.Path(__file__).stem process_id = os.getpid() @@ -55,12 +55,14 @@ def video_input_worker( # Get Pylance to stop complaining assert input_device is not None - end_time = time.time() + setup_end_time = time.time() - local_logger.info(f"{time.time()}: Class object creation took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + ) while not controller.is_exit_requested(): - start_time = time.time() + iteration_start_time = time.time() controller.check_pause() @@ -72,6 +74,8 @@ def video_input_worker( output_queue.queue.put(value) - end_time = time.time() + iteration_end_time = time.time() - local_logger.info(f"{time.time()}: Worker iteration took {end_time - start_time} seconds.") + local_logger.info( + f"{time.time()}: Worker iteration took {iteration_end_time - iteration_start_time} seconds." + ) From f85d93476877627b55ce5f56044852b547e2b652 Mon Sep 17 00:00:00 2001 From: Siddh Patel <47033295+siddhp1@users.noreply.github.com> Date: Thu, 6 Mar 2025 19:17:52 -0500 Subject: [PATCH 3/4] Update log statements --- modules/cluster_estimation/cluster_estimation_worker.py | 2 +- modules/communications/communications_worker.py | 2 +- modules/data_merge/data_merge_worker.py | 2 +- modules/detect_target/detect_target_worker.py | 2 +- modules/flight_interface/flight_interface_worker.py | 2 +- modules/geolocation/geolocation_worker.py | 2 +- modules/video_input/video_input_worker.py | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/cluster_estimation/cluster_estimation_worker.py b/modules/cluster_estimation/cluster_estimation_worker.py index b028fdff..3b204316 100644 --- a/modules/cluster_estimation/cluster_estimation_worker.py +++ b/modules/cluster_estimation/cluster_estimation_worker.py @@ -78,7 +78,7 @@ def cluster_estimation_worker( setup_end_time = time.time() local_logger.info( - f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + f"{time.time()}: Worker setup took {setup_end_time - setup_start_time} seconds." ) while not controller.is_exit_requested(): diff --git a/modules/communications/communications_worker.py b/modules/communications/communications_worker.py index e9f8e6ad..f3fe99c8 100644 --- a/modules/communications/communications_worker.py +++ b/modules/communications/communications_worker.py @@ -64,7 +64,7 @@ def communications_worker( setup_end_time = time.time() local_logger.info( - f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + f"{time.time()}: Worker setup took {setup_end_time - setup_start_time} seconds." ) while not controller.is_exit_requested(): diff --git a/modules/data_merge/data_merge_worker.py b/modules/data_merge/data_merge_worker.py index da9a15c7..f7511aac 100644 --- a/modules/data_merge/data_merge_worker.py +++ b/modules/data_merge/data_merge_worker.py @@ -57,7 +57,7 @@ def data_merge_worker( setup_end_time = time.time() - local_logger.info(f"{time.time()}: Setup took {setup_end_time - setup_start_time} seconds.") + local_logger.info(f"{time.time()}: Worker setup took {setup_end_time - setup_start_time} seconds.") while not controller.is_exit_requested(): iteration_start_time = time.time() diff --git a/modules/detect_target/detect_target_worker.py b/modules/detect_target/detect_target_worker.py index e64b2264..81cf1215 100644 --- a/modules/detect_target/detect_target_worker.py +++ b/modules/detect_target/detect_target_worker.py @@ -66,7 +66,7 @@ def detect_target_worker( setup_end_time = time.time() local_logger.info( - f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + f"{time.time()}: Worker setup took {setup_end_time - setup_start_time} seconds." ) while not controller.is_exit_requested(): diff --git a/modules/flight_interface/flight_interface_worker.py b/modules/flight_interface/flight_interface_worker.py index 1b659dab..579a91cf 100644 --- a/modules/flight_interface/flight_interface_worker.py +++ b/modules/flight_interface/flight_interface_worker.py @@ -63,7 +63,7 @@ def flight_interface_worker( setup_end_time = time.time() local_logger.info( - f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + f"{time.time()}: Worker setup took {setup_end_time - setup_start_time} seconds." ) while not controller.is_exit_requested(): diff --git a/modules/geolocation/geolocation_worker.py b/modules/geolocation/geolocation_worker.py index 84c7e7a2..6f4b2338 100644 --- a/modules/geolocation/geolocation_worker.py +++ b/modules/geolocation/geolocation_worker.py @@ -56,7 +56,7 @@ def geolocation_worker( setup_end_time = time.time() local_logger.info( - f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + f"{time.time()}: Worker setup took {setup_end_time - setup_start_time} seconds." ) while not controller.is_exit_requested(): diff --git a/modules/video_input/video_input_worker.py b/modules/video_input/video_input_worker.py index 5bd3f5b5..df30c1ce 100644 --- a/modules/video_input/video_input_worker.py +++ b/modules/video_input/video_input_worker.py @@ -58,7 +58,7 @@ def video_input_worker( setup_end_time = time.time() local_logger.info( - f"{time.time()}: Class object creation took {setup_end_time - setup_start_time} seconds." + f"{time.time()}: Worker setup took {setup_end_time - setup_start_time} seconds." ) while not controller.is_exit_requested(): From c5d80fbb196d646ec5bfbb28f573fe4367f44696 Mon Sep 17 00:00:00 2001 From: Siddh Patel <47033295+siddhp1@users.noreply.github.com> Date: Thu, 6 Mar 2025 19:19:04 -0500 Subject: [PATCH 4/4] Run formatter --- modules/data_merge/data_merge_worker.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/data_merge/data_merge_worker.py b/modules/data_merge/data_merge_worker.py index f7511aac..4ffd6073 100644 --- a/modules/data_merge/data_merge_worker.py +++ b/modules/data_merge/data_merge_worker.py @@ -57,7 +57,9 @@ def data_merge_worker( setup_end_time = time.time() - local_logger.info(f"{time.time()}: Worker setup took {setup_end_time - setup_start_time} seconds.") + local_logger.info( + f"{time.time()}: Worker setup took {setup_end_time - setup_start_time} seconds." + ) while not controller.is_exit_requested(): iteration_start_time = time.time()