Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/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()