2012-02-18 81 views
0

如果我想打印出PriorityQueue中的值,我该怎么做?我扩展了PriortiyQueue,并访问了底层列表queue。然而,当我的for循环做了,我得到了哪些项目被添加打印出PriorityQueue中的值

# the ADT PriorityQueue 
class ReadyQueue(PriorityQueue): 
    ... 

    def listAll(self): 
     print("PID \t Name \t Status \t Priority") 
     print("=" * 42) 
     for _, _, pcb in self.queue: 
      print(pcb) 

# ADT 
class PCB: 
    ... 
    def __lt__(self, other): 
     selfPriority = (self.priority, self.creationTime) 
     otherPriority = (other.priority, other.creationTime) 
     return selfPriority < otherPriority 

# in the main function 
q = ReadyQueue() 
q.enqueue(PCB("p1", 0, None, q)) 
q.enqueue(PCB("p8", 6, None, q)) 
q.enqueue(PCB("p2", 1, None, q)) 
q.enqueue(PCB("p0", 1, None, q)) 
q.enqueue(PCB("p6", 1, None, q)) 
q.enqueue(PCB("p4", 1, None, q)) 
q.enqueue(PCB("p3", 2, None, q)) 

q.listAll() 

输出顺序:


PID  Name Status  Priority 
========================================== 
0 p1  ready_s  0 
3 p0  ready_s  1 
2 p2  ready_s  1 
1 p8  ready_s  6 
4 p6  ready_s  1 
5 p4  ready_s  1 
6 p3  ready_s  2 

通知优先权是不正确的。虽然他们没有出现在创作秩序中......我错过了什么吗?

回答