Loading roles/solver.py +36 −10 Changes for roles/solver.py: 36 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ import sys import time import threading from collections import OrderedDict class Solver(object): def __init__(self, config): Loading @@ -15,7 +17,13 @@ class Solver(object): self.address = config['address'] self.name = config['name'] self.solver = importlib.import_module(f"solvers.{config['solver']}") self.thread = None self.queue = OrderedDict() self.status = 'Ready' # self.thread = None self.thread = threading.Thread(name='solver', target=self.solver_thread, daemon=True) self.thread.start() def __del__(self): self.stop_solver() Loading @@ -23,6 +31,18 @@ class Solver(object): def __repr__(self): return "Solver" def solver_thread(self): while True: if len(self.queue) > 0: print("I: Solver started") self.status = 'running' _, params = self.queue.popitem(last=False) self.solve(params) else: self.status = 'ready' time.sleep(0.5) def solve(self, params): start_time = time.time() Loading @@ -35,7 +55,7 @@ class Solver(object): solution['elapsed_time'] = elapsed_time self.submit_solution(params, solution) self.thread = None # self.thread = None return True def post(self, path, data): Loading @@ -57,14 +77,18 @@ class Solver(object): def start_solver(self, params): if self.thread is None: print("I: Solver started") # self.thread = StoppableThread(target=self.solve, args=(params, )) self.thread = threading.Thread(name='solver', target=self.solve, args=(params, ), daemon=True) self.thread.start() return {'status': 'started'} else: return {'status': 'busy'} # if self.thread is None: # print("I: Solver started") # self.thread = threading.Thread(name='solver', target=self.solve, args=(params, ), daemon=True) # self.thread.start() # return {'status': 'started'} # else: # return {'status': 'busy'} print("I: Problem queued") _id = params['request_id'] self.queue[_id] = params return {'status': 'queued'} def stop_solver(self): Loading @@ -80,5 +104,7 @@ class Solver(object): return self.start_solver(params) elif cmd == 'stop': return self.stop_solver() elif cmd == 'status': return self.status else: return None Loading
roles/solver.py +36 −10 Changes for roles/solver.py: 36 added lines, 10 removed lines. Original line number Diff line number Diff line Loading @@ -6,6 +6,8 @@ import sys import time import threading from collections import OrderedDict class Solver(object): def __init__(self, config): Loading @@ -15,7 +17,13 @@ class Solver(object): self.address = config['address'] self.name = config['name'] self.solver = importlib.import_module(f"solvers.{config['solver']}") self.thread = None self.queue = OrderedDict() self.status = 'Ready' # self.thread = None self.thread = threading.Thread(name='solver', target=self.solver_thread, daemon=True) self.thread.start() def __del__(self): self.stop_solver() Loading @@ -23,6 +31,18 @@ class Solver(object): def __repr__(self): return "Solver" def solver_thread(self): while True: if len(self.queue) > 0: print("I: Solver started") self.status = 'running' _, params = self.queue.popitem(last=False) self.solve(params) else: self.status = 'ready' time.sleep(0.5) def solve(self, params): start_time = time.time() Loading @@ -35,7 +55,7 @@ class Solver(object): solution['elapsed_time'] = elapsed_time self.submit_solution(params, solution) self.thread = None # self.thread = None return True def post(self, path, data): Loading @@ -57,14 +77,18 @@ class Solver(object): def start_solver(self, params): if self.thread is None: print("I: Solver started") # self.thread = StoppableThread(target=self.solve, args=(params, )) self.thread = threading.Thread(name='solver', target=self.solve, args=(params, ), daemon=True) self.thread.start() return {'status': 'started'} else: return {'status': 'busy'} # if self.thread is None: # print("I: Solver started") # self.thread = threading.Thread(name='solver', target=self.solve, args=(params, ), daemon=True) # self.thread.start() # return {'status': 'started'} # else: # return {'status': 'busy'} print("I: Problem queued") _id = params['request_id'] self.queue[_id] = params return {'status': 'queued'} def stop_solver(self): Loading @@ -80,5 +104,7 @@ class Solver(object): return self.start_solver(params) elif cmd == 'stop': return self.stop_solver() elif cmd == 'status': return self.status else: return None