def simulation(num_seconds, pages_per_minute): labprinter = Printer(pages_per_minute) print_queue = Queue() waiting_times = [] for current_second in range(num_seconds): # check if new task is generated if new_print_task(): task = Task(current_second) print_queue.enqueue(task) # feed queue to printer if (not labprinter.busy()) and (not print_queue.isEmpty()): nexttask = print_queue.deque() waiting_times.append(nexttask.waitTime(current_second)) labprinter.startNext(nexttask) labprinter.tick() average_wait = sum(waiting_times) / len(waiting_times) print("The average wait time is %f" % average_wait)