| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- ############################################################
- # 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()
|