/
run_backend_reducer.py
48 lines (36 loc) · 1.68 KB
/
run_backend_reducer.py
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
39
40
41
42
43
44
45
46
47
48
from logger import setup_global_logger
from backend import BackendMantidReducer
from backend import ResultPublisher
from backend import ZMQQueueServer
from backend import ZMQQueueClient
from parameter_control_server import ParameterControlServer
import ports
import threading
import time
import argparse
import numpy
from mpi4py import MPI
parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("-l", "--log", type=str, default='info', help="Set the log level. Allowed values are 'critical', 'error', 'warning', 'info', and 'debug'.")
args = parser.parse_args()
rank = MPI.COMM_WORLD.Get_rank()
event_queue_port = 11000 + rank
setup_global_logger(level=args.log, rank=rank)
event_queue_in = ZMQQueueClient(port=event_queue_port)
event_queue_in_thread = threading.Thread(target=event_queue_in.run)
event_queue_in_thread.start()
reducer = BackendMantidReducer(event_queue_in)
reducer_thread = threading.Thread(target=reducer.run)
reducer_thread.start()
if MPI.COMM_WORLD.Get_rank() == 0:
reducer_controller = ParameterControlServer(controllees=[reducer], port=ports.rebin_control)
reducer_controller_thread = threading.Thread(target=reducer_controller.run)
reducer_controller_thread.start()
resultPublisher = ResultPublisher(reducer)
resultPublisher_thread = threading.Thread(target=resultPublisher.run)
resultPublisher_thread.start()
parameterController = ParameterControlServer(controllees=[resultPublisher], port=ports.result_publisher_control)
parameterController_thread = threading.Thread(target=parameterController.run)
parameterController_thread.start()
while threading.active_count() > 0:
time.sleep(0.1)