From 69fbe7a9a37b0f74b337a14beec38bbd7cbed317 Mon Sep 17 00:00:00 2001 From: Juan Pablo Caram Date: Fri, 28 Mar 2014 18:18:18 -0400 Subject: [PATCH] Added FlatCAMWorker.py --- FlatCAMWorker.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 FlatCAMWorker.py diff --git a/FlatCAMWorker.py b/FlatCAMWorker.py new file mode 100644 index 00000000..6cc0669a --- /dev/null +++ b/FlatCAMWorker.py @@ -0,0 +1,43 @@ +############################################################ +# FlatCAM: 2D Post-processing for Manufacturing # +# http://caram.cl/software/flatcam # +# Author: Juan Pablo Caram (c) # +# Date: 2/5/2014 # +# MIT Licence # +############################################################ + +import threading +import Queue + + +class Worker(threading.Thread): + """ + Implements a queue of tasks to be carried out in order + in a single independent thread. + """ + + def __init__(self): + super(Worker, self).__init__() + self.queue = Queue.Queue() + self.stoprequest = threading.Event() + + def run(self): + while not self.stoprequest.isSet(): + try: + task = self.queue.get(True, 0.05) + self.do_task(task) + except Queue.Empty: + continue + + @staticmethod + def do_task(task): + task['fcn'](*task['params']) + return + + def add_task(self, target, params=list()): + self.queue.put({'fcn': target, 'params': params}) + return + + def join(self, timeout=None): + self.stoprequest.set() + super(Worker, self).join() \ No newline at end of file