diff --git a/code/worker.py b/code/worker.py new file mode 100644 index 0000000..5844fca --- /dev/null +++ b/code/worker.py @@ -0,0 +1,40 @@ +from multiprocessing import Process, Queue +import time +from typing import List +import os + + +class Worker(object): + def __init__(self, queue: Queue): + self.run_flag = True + self.queue = queue + self.process = Process( + target=self.handle_jobs, + args=(self.queue,) + ) + time.sleep(1) + self.process.start() + + def stop(self): + self.queue.put(['exit']) + self.process.join() + + @staticmethod + def handle_jobs(queue: Queue): + while True: + if queue.empty(): + time.sleep(1) + continue + cmd_list: List[str] = queue.get() + print('received job:\n', cmd_list) + if cmd_list[0].lower() == 'exit': + break + cmd_str = ' && '.join(cmd_list) + os.system(cmd_str) + + +if __name__ == '__main__': + work_queue: Queue = Queue() + worker = Worker(queue=work_queue) + work_queue.put(['echo "hello world"', 'echo "hello world again"']) + worker.stop()