class Printer(object): def __init__(self, ppm): self.task_queue = QueueAA() self.__pages_per_minute = ppm self.__time_remaining = 0 self.__current_task = None self.__waiting_times = [] self.__job_history = {} self.__job_id = 1000 def start_next_task(self): self.__current_task = self.task_queue.dequeue() if self.__current_task != None: #Task is starting print("Job #{0}: Starting new print task...".format(self.__job_id)) self.__job_history[self.__job_id] = self.__current_task.get_pages() self.__time_remaining = self.__current_task.get_pages( ) * 60 / self.__pages_per_minute self.__waiting_times.append(self.__time_remaining) def tick(self): if self.__current_task != None: self.__time_remaining -= 1 if self.__time_remaining <= 0: #Task is done print("Job #{0}: Task done. Printed {1} pages".format( self.__job_id, self.__job_history[self.__job_id])) self.__job_id += 1 if self.__time_remaining <= 0: self.start_next_task() def add_print_task(self, task): self.task_queue.enqueue(task) def is_busy(self): return self.__current_task != None def average_waiting_time(self): return sum(self.__waiting_times) / len(self.__waiting_times) def average_pages(self): return sum(self.__job_history.values()) / len(self.__job_history) def reset_history(self): self.__waiting_times = [] def reset_printing_queue(self): self.task_queue.clear()
class Printer(object): def __init__(self, ppm): self.task_queue = QueueAA() self.__pages_per_minute = ppm self.__time_remaining = 0 self.__current_task = None self.__waiting_times = [] self.__job_history = {} self.__job_id = 1000 def start_next_task(self): self.__current_task = self.task_queue.dequeue() if self.__current_task != None: #Task is starting print("Job #{0}: Starting new print task...".format(self.__job_id)) self.__job_history[self.__job_id] = self.__current_task.get_pages() self.__time_remaining = self.__current_task.get_pages() * 60 / self.__pages_per_minute self.__waiting_times.append(self.__time_remaining) def tick(self): if self.__current_task != None: self.__time_remaining -= 1 if self.__time_remaining <= 0: #Task is done print("Job #{0}: Task done. Printed {1} pages".format(self.__job_id, self.__job_history[self.__job_id])) self.__job_id += 1 if self.__time_remaining <= 0: self.start_next_task() def add_print_task(self, task): self.task_queue.enqueue(task) def is_busy(self): return self.__current_task != None def average_waiting_time(self): return sum(self.__waiting_times) / len(self.__waiting_times) def average_pages(self): return sum(self.__job_history.values()) / len(self.__job_history) def reset_history(self): self.__waiting_times = [] def reset_printing_queue(self): self.task_queue.clear()
def testALQueueTest(self): queue = QueueAA() self.assertEqual(queue.size(), 0) self.assertTrue(queue.is_empty()) self.assertEqual(queue.dequeue(), None) queue.enqueue("First") queue.enqueue(2) queue.enqueue("Third") self.assertEqual(queue.size(), 3) self.assertFalse(queue.is_empty()) self.assertEqual(queue.dequeue(), "First") self.assertEqual(queue.dequeue(), 2) self.assertEqual(queue.dequeue(), "Third") self.assertEqual(queue.dequeue(), None) queue.enqueue("Fourth") self.assertEqual(queue.dequeue(), "Fourth") queue.enqueue("Uno") queue.enqueue("Dos") queue.clear() self.assertEqual(queue.is_empty(), True)
def testALQueueTest(self): queue = QueueAA() self.assertEqual(queue.size(),0) self.assertTrue(queue.is_empty()) self.assertEqual(queue.dequeue(), None) queue.enqueue("First") queue.enqueue(2) queue.enqueue("Third") self.assertEqual(queue.size(),3) self.assertFalse(queue.is_empty()) self.assertEqual(queue.dequeue(), "First") self.assertEqual(queue.dequeue(), 2) self.assertEqual(queue.dequeue(), "Third") self.assertEqual(queue.dequeue(), None) queue.enqueue("Fourth") self.assertEqual(queue.dequeue(), "Fourth") queue.enqueue("Uno") queue.enqueue("Dos") queue.clear() self.assertEqual(queue.is_empty(), True)