class ThreadPool(Thread): def __init__(self, numWorker, interval=0.05, timeout=5, queueMax=100): Thread.__init__(self) self.taskQueue = PriorityQueue(maxsize=queueMax) self.workers = [] self.lock = Lock() self.interval = interval for m in range(numWorker): self.workers.append( WorkerThread(self.taskQueue, self.lock, self.interval)) def run(self): for worker in self.workers: worker.start() for worker in self.workers: worker.join() # release tasks def clear_tasks(self): self.taskQueue.clear() def submit(self, task, kargs, priority=9): self.taskQueue.put((priority, task, kargs))
class priority_queue: def __init__(self): self.__q = PriorityQueue() self.__size = 0 #done def size(self): return self.__size #done def front(self): x = self.__q.get() self.__q.put(x) return x[0] #done def insert(self, x): self.__q.put((x, x)) self.__size += 1 #done def empty(self): if (self.__size == 0): return 1 else: return 0 #done #done def clear(self): self.__q.clear() self.__size = 0 #done def pop(self): if (self.__size > 0): x = self.__q.get() self.__size -= 1 del x return else: print("Queue has no data") sys.exit(-1)