这是个Task Scheduler问题
Task类接收description,priority,deadline三个参数
PriorityQueue类是Task类的集合,每个任务分配了优先级和截止日期,集合按优先级递减和截止日期递增排序
Scheduler类使用一个优先级队列来管理一组任务,_queue的实例变量是PriorityQueue类的对象,用于存储任务
我需要实现任务的添加和移除
以下是我的代码:
import heapq
class Task:
def init(self, _description, _priority, _deadline):
self._description = _description
self._priority = _priority
self._deadline = _deadline
def __lt__(self, other):
if self._priority == other:
return self._deadline < other
return self._priority > other
def get_description(self):
return self._description
def set_description(self, _description):
self._description = _description
def get_priority(self):
return self._priority
def set_priority(self, _priority):
self._priority = _priority
def get_deadline(self):
return self._deadline
def set_deadline(self, _deadline):
self._deadline = _deadline
def __str__(self):
return 'description:{}, priority:{}, deadline:{}'.format(self._description, self._priority, self._deadline)
class PriorityQueue:
def init(self):
self._tasks = []
def add_task(self, _task):
heapq.heappush(self._tasks, _task)
def remove_task(self, _task):
if not self._tasks:
return None
else:
self._tasks.remove(_task)
heapq.heapify(self._tasks)
return self._tasks.remove(_task)
def peek_task(self, _task):
if not self._tasks:
return None
else:
return self._tasks[0]
def get_tasks(self, _task):
return self._tasks.remove(_task)
class Scheduler:
def init(self):
self._queue = PriorityQueue()
def add_task(self, _task):
self._queue.add_task(_task)
def remove_task(self, _task):
self._queue.remove_task(_task)
return self._queue.remove_task(_task)
需要通过以下代码测试:
remove_task()方法你没有传入参数。比如:
self.assertEqual(self.scheduler.remove_task(task2), task2)