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