From f4aabf977ef35f66cc4a16fe630e470e04874f0e Mon Sep 17 00:00:00 2001 From: John Lancaster <32917998+jsl12@users.noreply.github.com> Date: Sat, 4 Jan 2025 21:50:29 -0600 Subject: [PATCH] changed to logging --- ad_threads.py | 44 ++++++++++++++++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/ad_threads.py b/ad_threads.py index 5ee941b..f7832b8 100644 --- a/ad_threads.py +++ b/ad_threads.py @@ -1,3 +1,4 @@ +import logging import threading from collections.abc import Iterable from concurrent.futures import ThreadPoolExecutor @@ -6,10 +7,12 @@ from queue import Queue from time import perf_counter from typing import Callable +logger = logging.getLogger(__name__) + def worker(q: Queue): thread = threading.current_thread() - print(thread) + logger.info(thread) while True: try: item = q.get() @@ -17,25 +20,25 @@ def worker(q: Queue): if item is None: break elif callable(item): - print(f'Calling {item}') + logger.info(f'Calling {item}') item() - else: - print(f'{thread.name}: {item}') except Exception as exc: - print(f'Error: {exc}') + logger.info(f'Error: {exc}') finally: - proc_time = perf_counter() - get_time q.task_done() - print(f'{proc_time*10**3:.3f}ms') + proc_time = perf_counter() - get_time + logger.info(f'{thread.name}: {proc_time*10**3:.3f}ms {item}') - # print('Broke worker loop') + # logger.info('Broke worker loop') return f'Ended {thread.name}' def run_executor(queues: Iterable[Queue]): with ThreadPoolExecutor(thread_name_prefix='AD-App-Thread') as executor: - for fut in executor.map(worker, queues): - print(fut) + for q in queues: + executor.submit(worker, q=q) + # for fut in executor.map(worker, queues): + # logger.info(fut) def main(n: int, start: bool = True): @@ -52,3 +55,24 @@ def main(n: int, start: bool = True): def dispatch_worker(queue: Queue, func: Callable, *args, **kwargs): return queue.put_nowait(partial(func, *args, **kwargs)) + + +if __name__ == '__main__': + from time import sleep + + logging.basicConfig( + level='INFO', + format='{asctime} [{levelname}] {message}', + style='{' + ) + + queues = main(5) + + logger.info('Starting') + + for i in range(5): + for q in queues: + q.put_nowait(i) + logger.info('Sleeping') + sleep(1.0) + logger.info('Done')