2018-07-27

17.7.queue- 同步队列类源代码: Lib / queue.py

该queue模块实现了多生产者,多消费者队列。当必须在多个线程之间安全地交换信息时,它在线程编程中特别有用。Queue此模块中的类实现了所有必需的锁定语义。这取决于Python中线程支持的可用性; 看threading 模块。该模块实现了三种类型的队列,它们的区别仅在于检索条目的顺序。在FIFO 队列中,添加的第一个任务是第一个检索的任务。在 LIFO队列中,最近添加的条目是第一个检索的条目(像堆栈一样运行)。使用优先级队列,条目将保持排序(使用heapq模块),并首先检索最低值的条目。在内部,这三种类型的队列使用锁来临时阻止竞争线程; 但是,它们并非旨在处理线程内的重入。此外,该模块实现了“简单” FIFO队列类型,其中特定实现可以提供额外的保证以换取较小的功能。该queue模块定义了以下类和异常:class queue.Queue(maxsize = 0 )FIFO队列的构造函数。 maxsize是一个整数,用于设置可以放入队列的项目数的上限。达到此大小后,插入将阻止,直到消耗队列项。如果 maxsize小于或等于零,则队列大小为无限大。class queue.LifoQueue(maxsize = 0 )LIFO队列的构造函数。 maxsize是一个整数,用于设置可以放入队列的项目数的上限。达到此大小后,插入将阻止,直到消耗队列项。如果 maxsize小于或等于零,则队列大小为无限大。class queue.PriorityQueue(maxsize = 0 )优先级队列的构造函数。 maxsize是一个整数,用于设置可以放入队列的项目数的上限。达到此大小后,插入将阻止,直到消耗队列项。如果 maxsize小于或等于零,则队列大小为无限大。首先检索最低值的条目(最低值条目是返回的条目sorted(list(entries))[0])。条目的典型模式是以下形式的元组:。(priority_number, data)如果数据元素不具有可比性,则可以将数据包装在忽略数据项的类中,并仅比较优先级编号:from dataclasses import dataclass, field from typing import Any @dataclass(order=True) class PrioritizedItem: priority: int item: Any=field(compare=False) 类queue.SimpleQueue无界FIFO队列的构造函数。简单队列缺少任务跟踪等高级功能。版本3.7中的新功能。异常queue.Empty在对象为空时调用非阻塞get()(或 get_nowait())时引发异常Queue。异常queue.Full在对象已满时调用非阻塞put()(或 put_nowait())时引发异常Queue。 

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容