python的优先队列示例

来源:互联网 发布:合版印刷网络下单系统 编辑:程序博客网 时间:2024/05/29 07:51

来自python标准库

1. 代码

import Queue
import threading
class Job(object):
    def __init__(self, priority, description):
        self.priority = priority
        self.description = description
        print 'New job:', description
        return     
    def __cmp__(self, other):
        return cmp(self.priority, other.priority)
    
q = Queue.PriorityQueue()
q.put(Job(3,'Mid-level job'))
q.put(Job(10,'Low-level job'))
q.put(Job(1,'Important job'))


def process_job(q):
    while True:
        next_job = q.get()
        print 'Processing job:', next_job.description
        q.task_done()        
workers = [threading.Thread(target=process_job,args=(q,)),
           threading.Thread(target=process_job,args=(q,)),]
for w in workers:
    w.setDaemon(True)
    w.start()
q.join()


2. 执行结果

New job: Mid-level job
New job: Low-level job
New job: Important job
Processing job: Important job
Processing job: Mid-level job
Processing job: Low-level job

0 0