Example #1
0
    def get_token_queue(self) -> Queue:
        """토큰이 담긴 Queue를 반환한다.

        Returns: 토큰이 왼쪽부터 순서대로 담긴 Queue
        """
        queue = Queue()

        for token in self._tokens:
            queue.enqueue(token)

        return queue
def hotPotatoes(nameList, cycNum):
    nameQueue = Queue()
    for name in nameList:
        print "enqueue %s in the queue" % name
        nameQueue.enqueue(name)
    while nameQueue.size() > 1:
        for i in range(cycNum-1):
            nameDeq = nameQueue.dequeue()
            print "dequeue and enqueue %s" % nameDeq
            nameQueue.enqueue(nameDeq)
        print "dequeue %s permanently" % nameQueue.dequeue()
    return nameQueue.dequeue()
def simuPrintTask(duration, printRate):
    printer = Printer(printRate)
    printQueue = Queue()
    waitingTimes = []
    for curSecond in range(duration):
        if random.randrange(1,181) == 180:
            print "There is a new task at %sth second" % curSecond
            newTask = Task(curSecond)
            print "This task has print pages of %d" % newTask.getPages()
            printQueue.enqueue(newTask)
        if (not printer.hasTask()) and (not printQueue.isEmpty()):
            nextTask = printQueue.dequeue()
            print "Printer starts the next task"
            printer.startNextTask(nextTask)
            waitingTimes.append(nextTask.getWaitingTime(curSecond))
            print "Current waiting time list: ", waitingTimes
        printer.countDownTime()
        
    avgWaitingTime = sum(waitingTimes) / len(waitingTimes)
    print "Average waiting time: %d seconds" % avgWaitingTime
    print "%d tasks remaining at the moment" % printQueue.size()