2012-02-18 80 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 

通知優先權是不正確的。雖然他們沒有出現在創作秩序中......我錯過了什麼嗎?

回答