#!/usr/bin/env python3 """ minion intended to be launched by slurm """ import argparse import queue import time from manager import QueueClient from work import find_prime class Minion(QueueClient): def __init__(self, n_tasks: int): self.n_tasks = n_tasks super().__init__() def run(self): for n in range(self.n_tasks): try: task = self.queue.get(block=False) except queue.Empty: print("All work is already done !") break start = time.perf_counter() print(f"start work {n + 1}/{self.n_tasks} on task {task}...") result = find_prime(task) perf = time.perf_counter() - start print(f"The {task}-th prime number is {result}") print(f"Its associated quaternion norm is {norm}") print(f"found in {perf:.3f}s") print("done !") if __name__ == "__main__": parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("n_tasks", type=int, default=1, nargs="?") Minion(**vars(parser.parse_args())).run()