示例#1
0
def simulation(numSeconds, pagePerMinute):
    """Return result of simulation of printer queue bellow numSeconds with
    a rate of pagePerMinute (Supposing that a task is complete once every 180
    seconds (probability), and the pages range from 1 to 20 pages."""
    printerQueue = Queue()
    labPrinter = Printer(pagePerMinute)
    waitingList = []

    for currentSecond in range(numSeconds):
        if newPrintTask():
            # If a new task is created we enqueue it to the queue with the
            # second it was enqueued.
            task = Task(currentSecond)
            printerQueue.enqueue(task)

        if not labPrinter.busy() and not printerQueue.isEmpty():
            nextTask = printerQueue.dequeue()  # Dequeue the next element.
            waitingTime = nextTask.waitTime(currentSecond)
            # This calculated how many time passed since the task was created
            # until it started to process. First task always 0.
            waitingList.append(waitingTime)
            labPrinter.startNext(nextTask)  # Only executed when the task is
            # done and there are more elements in queue.

        labPrinter.tick()

    avgWait = sum(waitingList) / len(waitingList)
    return "Avg time per task {:.2f} sec, {} tasks on queue."\
        .format(avgWait, printerQueue.size())
def simulation(num_seconds, pages_per_minute):
    lab_printer = Printer(pages_per_minute)
    print_queue = Queue()
    waiting_times = []
    for current_second in range(num_seconds):
        if new_print_task():
            task = Task(current_second)
            print_queue.enqueue(task)
        if (not lab_printer.busy()) and (not print_queue.is_empty()):
            next_task = print_queue.dequeue()
            waiting_times.append(next_task.wait_time(current_second))
            lab_printer.start_next(next_task)
        lab_printer.tick()
    average_wait = sum(waiting_times) / len(waiting_times)
    print("Average Wait %6.2f secs %3d tasks remaining." %
          (average_wait, print_queue.size()))
示例#3
0
def simulation(seconds, ppm):
    printQueue = Queue()
    waitingtimes = []
    printer = Printer(ppm)
    for currentSecond in range(seconds):
        if newPrintTask():
            printQueue.enqueue(Task("Task"+str(currentSecond), currentSecond))
        
        if (not printer.busy()) and (not printQueue.isEmpty()):
            nexttask = printQueue.dequeue()
            waitingtimes.append(nexttask.getWaitTime(currentSecond))
            printer.nextTask(nexttask)
        
        printer.tick()
    lenWaitTime = len(waitingtimes)
    averageWait=sum(waitingtimes)/lenWaitTime
    print("Average Wait %6.2f secs %3d tasks remaining."%(averageWait,printQueue.size()))
示例#4
0
def simulation(numSeconds, pagePerMin):
    labPrinter = Printer(pagePerMin)
    printQ = Queue()
    waitTime = []

    for currentSecond in range(numSeconds):
        if newPrintTask():
            task = Task(currentSecond)
            printQ.enqueue(task)

        if (not labPrinter.busy()) and (not printQ.is_empty()):
            nextTask = printQ.dequeue()
            waitTime.append(nextTask.waitTime(currentSecond))
            labPrinter.startNext(nextTask)

        labPrinter.tick()
    avgWait = sum(waitTime)/len(waitTime)
    print ("Avg wait: %6.2f secs, Tasks remaining: %3d"
           % (avgWait, printQ.size()))
示例#5
0
def simulation(numSeconds, pagePerMin):
    labPrinter = Printer(pagePerMin)
    printQ = Queue()
    waitTime = []

    for currentSecond in range(numSeconds):
        if newPrintTask():
            task = Task(currentSecond)
            printQ.enqueue(task)

        if (not labPrinter.busy()) and (not printQ.is_empty()):
            nextTask = printQ.dequeue()
            waitTime.append(nextTask.waitTime(currentSecond))
            labPrinter.startNext(nextTask)

        labPrinter.tick()
    avgWait = sum(waitTime) / len(waitTime)
    print("Avg wait: %6.2f secs, Tasks remaining: %3d" %
          (avgWait, printQ.size()))
示例#6
0
def simulation(numSeconds, pagesPerMinute):

    labprinter = Printer(pagesPerMinute)
    printQueue = Queue()
    waitingtimes = []

    for currentSecond in range(numSeconds):

        if newPrintTask():
            task = Task(currentSecond)
            printQueue.enqueue(task)

        if (not labprinter.busy()) and (not printQueue.isEmpty()):
            nexttask = printQueue.dequeue()
            waitingtimes.append(nexttask.waitTime(currentSecond))
            labprinter.startNext(nexttask)

        labprinter.tick()

    averageWait = sum(waitingtimes) / len(waitingtimes)
    print("Average Wait %6.2f secs %3d tasks remaining." %(averageWait, printQueue.size()))