#!/usr/bin/env python3
"""
minion intended to be launched by slurm
"""

import argparse
import queue
import random
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}/{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()