ipad可以做网站推广吗,旅游网站建设网站,怎样创建行业门户网站,上海百度seo网站优化QueueQueue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构#xff0c;即队列#xff0c;用来在生产者和消费者线程之间的信息传递基本FIFO队列class Queue.Queue(maxsize0)FIFO即First in First Out,先进先出。Queue提供了一个…QueueQueue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构即队列用来在生产者和消费者线程之间的信息传递基本FIFO队列class Queue.Queue(maxsize0)FIFO即First in First Out,先进先出。Queue提供了一个基本的FIFO容器使用方法很简单,maxsize是个整数指明了队列中能存放的数据个数的上限。一旦达到上限插入会导致阻塞直到队列中的数据被消费掉。如果maxsize小于或者等于0队列大小没有限制。举个栗子import Queueq Queue.Queue()for i in range(5):q.put(i)while not q.empty():print q.get()输出01234LIFO队列class Queue.LifoQueue(maxsize0)LIFO即Last in First Out,后进先出。与栈的类似使用也很简单,maxsize用法同上再举个栗子import Queueq Queue.LifoQueue()for i in range(5):q.put(i)while not q.empty():print q.get()输出43210可以看到仅仅是将Queue.Quenu类替换为Queue.LifiQueue类优先级队列class Queue.PriorityQueue(maxsize0)构造一个优先队列。maxsize用法同上。import Queueimport threadingclass Job(object):def __init__(self, priority, description):self.priority priorityself.description descriptionprint Job:,descriptionreturndef __cmp__(self, other):return cmp(self.priority, other.priority)q Queue.PriorityQueue()q.put(Job(3, level 3 job))q.put(Job(10, level 10 job))q.put(Job(1, level 1 job))def process_job(q):while True:next_job q.get()print for:, next_job.descriptionq.task_done()workers [threading.Thread(targetprocess_job, args(q,)),threading.Thread(targetprocess_job, args(q,))]for w in workers:w.setDaemon(True)w.start()q.join()结果Job: level 3 jobJob: level 10 jobJob: level 1 jobfor: level 1 jobfor: level 3 jobfor: job: level 10 job一些常用方法task_done()意味着之前入队的一个任务已经完成。由队列的消费者线程调用。每一个get()调用得到一个任务接下来的task_done()调用告诉队列该任务已经处理完毕。如果当前一个join()正在阻塞它将在队列中的所有任务都处理完时恢复执行(即每一个由put()调用入队的任务都有一个对应的task_done()调用)。join()阻塞调用线程直到队列中的所有任务被处理掉。只要有数据被加入队列未完成的任务数就会增加。当消费者线程调用task_done()(意味着有消费者取得任务并完成任务)未完成的任务数就会减少。当未完成的任务数降到0join()解除阻塞。put(item[, block[, timeout]])将item放入队列中。如果可选的参数block为True且timeout为空对象(默认的情况阻塞调用无超时)。如果timeout是个正整数阻塞调用进程最多timeout秒如果一直无空空间可用抛出Full异常(带超时的阻塞调用)。如果block为False如果有空闲空间可用将数据放入队列否则立即抛出Full异常其非阻塞版本为put_nowait等同于put(item, False)get([block[, timeout]])从队列中移除并返回一个数据。block跟timeout参数同put方法其非阻塞方法为get_nowait()相当与get(False)empty()如果队列为空返回True,反之返回False以上所述是小编给大家介绍的python队列Queue详解整合希望对大家有所帮助如果大家有任何疑问请给我留言小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持