From cb00a82c678d5bee92f5e7bed16b7f29021f12c8 Mon Sep 17 00:00:00 2001 From: Brandon Rozek Date: Wed, 9 Apr 2025 10:59:02 -0400 Subject: [PATCH] Attempt at keeping workers busy --- vspursuer.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/vspursuer.py b/vspursuer.py index 20c3004..34c219d 100755 --- a/vspursuer.py +++ b/vspursuer.py @@ -139,7 +139,7 @@ if __name__ == "__main__": result = result_queue.get(True, 60) except QueueEmpty: # Health check in case processes crashed - num_dead = 0 + num_dead = 0 for p in processes: if not p.is_alive(): num_dead += 1 @@ -174,10 +174,24 @@ if __name__ == "__main__": if done_parsing: continue - added = add_to_queue(solutions, task_queue, num_cpu) - if not added: - done_parsing = True + # NOTE: We should attempt to maintain a decent amount + # of work in the task queue so that workers stay busy + task_queue_size: Optional[int] = None + try: + task_queue_size = task_queue.qsize() + except NotImplementedError: + # On MacOS this isn't implemented + pass + num_new_tasks = 1 + if task_queue_size is not None and task_queue_size < num_cpu * 2: + num_new_tasks = (num_cpu * 2) - task_queue_size + + for _ in range(num_new_tasks): + added = add_to_queue(solutions, task_queue, num_cpu) + if not added: + done_parsing = True + break print(f"Tested {num_tested} models, {num_has_vsp} of which satisfy VSP")