Exemple #1
0
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)