Newer
Older
#!/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} (found in {perf:.3f}s)")
if __name__ == "__main__":
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("n_tasks", type=int, default=1, nargs="?")
Minion(**vars(parser.parse_args())).run()