当前位置: 首页 > news >正文

网站横条广告百度推广需要手机网站

网站横条广告,百度推广需要手机网站,做公司网站的服务费入什么费用,织梦配置手机网站queue 模块即队列#xff0c;特别适合处理信息在多个线程间安全交换的多线程程序中。下面我们对 queue 模块进行一个详细的使用介绍。 1 queue 模块定义的类和异常 queue 模块定义了以下四种不同类型的队列#xff0c;它们之间的区别在于数据入队列之后出队列的顺序不同。 …queue 模块即队列特别适合处理信息在多个线程间安全交换的多线程程序中。下面我们对 queue 模块进行一个详细的使用介绍。 1 queue 模块定义的类和异常 queue 模块定义了以下四种不同类型的队列它们之间的区别在于数据入队列之后出队列的顺序不同。 1.1 queue.Queue(maxsize0) 先进先出(First In First Out: FIFO)队列最早进入队列的数据拥有出队列的优先权就像看电影入场时排队一样排在队伍前头的优先进入电影院。 入参 maxsize 是一个整数用于设置队列的最大长度。一旦队列达到上限插入数据将会被阻塞直到有数据出队列之后才可以继续插入。如果 maxsize 设置为小于或等于零则队列的长度没有限制。 示例如下 import queue q queue.Queue() # 创建 Queue 队列 for i in range(3):q.put(i) # 在队列中依次插入0、1、2元素 for i in range(3):print(q.get()) # 依次从队列中取出插入的元素数据元素输出顺序为0、1、21.2 queue.LifoQueue(maxsize0) 后进先出(Last In First Out: LIFO)队列最后进入队列的数据拥有出队列的优先权就像栈一样。 入参 maxsize 与先进先出队列的定义一样。 示例如下 import queue q queue.LifoQueue() # 创建 LifoQueue 队列 for i in range(3):q.put(i) # 在队列中依次插入0、1、2元素 for i in range(3):print(q.get()) # 依次从队列中取出插入的元素数据元素输出顺序为2、1、01.3 PriorityQueue(maxsize0) 优先级队列比较队列中每个数据的大小值最小的数据拥有出队列的优先权。数据一般以元组的形式插入典型形式为(priority_number, data)。如果队列中的数据没有可比性那么数据将被包装在一个类中忽略数据值仅仅比较优先级数字。 入参 maxsize 与先进先出队列的定义一样。 示例如下 import queue q queue.PriorityQueue() # 创建 PriorityQueue 队列 data1 (1, python) data2 (2, -) data3 (3, 100) style (data2, data3, data1) for i in style:q.put(i) # 在队列中依次插入元素 data2、data3、data1 for i in range(3):print(q.get()) # 依次从队列中取出插入的元素数据元素输出顺序为 data1、data2、data31.4 queue.SimpleQueue 先进先出类型的简单队列没有大小限制。由于它是简单队列相比于 Queue 队列会缺少一些高级功能下面第2-3小节将会介绍。 示例如下 import queue q queue.SimpleQueue() # 创建 SimpleQueue 队列 for i in range(3):q.put(i) # 在队列中依次插入0、1、2元素 for i in range(3):print(q.get()) # 依次从队列中取出插入的元素数据元素输出顺序为0、1、21.5 queue.Empty 异常 当队列中没有数据元素时取出队列中的数据会引发 queue.Empty 异常主要是不正当使用 get() 和 get_nowait() 引起的。 示例如下 import queue try:q queue.Queue(3) # 设置队列上限为3q.put(python) # 在队列中插入字符串 pythonq.put(-) # 在队列中插入字符串 -q.put(100) # 在队列中插入字符串 100for i in range(4): # 从队列中取数据取出次数为4次引发 queue.Empty 异常print(q.get(blockFalse)) except queue.Empty:print(queue.Empty)1.6 queue.Full 异常 当队列数据元素容量达到上限时继续往队列中放入数据会引发 queue.Empty 异常主要是不正当使用 put() 和 put_nowait() 引起的。 示例如下 import queue try:q queue.Queue(3) # 设置队列上限为3q.put(python) # 在队列中插入字符串 pythonq.put(-) # 在队列中插入字符串 -q.put(100) # 在队列中插入字符串 100q.put(stay hungry, stay foolish, blockFalse) # 队列已满继续往队列中放入数据引发 queue.Full 异常 except queue.Full:print(queue.Full)2 Queue、LifoQueue、PriorityQueue 和 SimpleQueue 对象的基本使用方法 Queue、LifoQueue、PriorityQueue 和 SimpleQueue 四种队列定义的对象均提供了以下函数使用方法下面以 Queue 队列为例进行介绍。 2.1 Queue.qsize() 返回队列中数据元素的个数。 示例如下 import queue q queue.Queue() q.put(python-100) # 在队列中插入元素 python-100 print(q.qsize()) # 输出队列中元素个数为12.2 Queue.empty() 如果队列为空返回 True否则返回 False。 示例如下 import queue q queue.Queue() print(q.empty()) # 对列为空返回 True q.put(python-100) # 在队列中插入元素 python-100 print(q.empty()) # 对列不为空返回 False2.3 Queue.full() 如果队列中元素个数达到上限返回 True否则返回 False。 示例如下 import queue q queue.Queue(3) # 定义一个长度为3的队列 print(q.full()) # 元素个数未达到上限返回 False q.put(python) # 在队列中插入字符串 python q.put(-) # 在队列中插入字符串 - q.put(100) # 在队列中插入字符串 100 print(q.full()) # 元素个数达到上限返回 True2.4 Queue.put(item, blockTrue, timeoutNone) item放入队列中的数据元素。 block当队列中元素个数达到上限继续往里放数据时如果 blockFalse直接引发 queue.Full 异常如果 blockTrue且 timeoutNone则一直等待直到有数据出队列后可以放入数据如果 blockTrue且 timeoutNN 为某一正整数时则等待 N 秒如果队列中还没有位置放入数据就引发 queue.Full 异常。 timeout设置超时时间。 示例如下 import queue try:q queue.Queue(2) # 设置队列上限为2q.put(python) # 在队列中插入字符串 pythonq.put(-) # 在队列中插入字符串 -q.put(100, block True, timeout 5) # 队列已满继续在队列中插入字符串 100等待5秒后会引发 queue.Full 异常 except queue.Full:print(queue.Full)2.5 Queue.put_nowait(item) 相当于 Queue.put(item, blockFalse)当队列中元素个数达到上限继续往里放数据时直接引发 queue.Full 异常。 import queue try:q queue.Queue(2) # 设置队列上限为2q.put_nowait(python) # 在队列中插入字符串 pythonq.put_nowait(-) # 在队列中插入字符串 -q.put_nowait(100) # 队列已满继续在队列中插入字符串 100直接引发 queue.Full 异常 except queue.Full:print(queue.Full)2.6 Queue.get(blockTrue, timeoutNone) 从队列中取出数据并返回该数据内容。 block当队列中没有数据元素继续取数据时如果 blockFalse直接引发 queue.Empty 异常如果 blockTrue且 timeoutNone则一直等待直到有数据入队列后可以取出数据如果 blockTrue且 timeoutNN 为某一正整数时则等待 N 秒如果队列中还没有数据放入的话就引发 queue.Empty 异常。 timeout设置超时时间。 示例如下 import queue try:q queue.Queue()q.get(block True, timeout 5) # 队列为空往队列中取数据时等待5秒后会引发 queue.Empty 异常 except queue.Empty:print(queue.Empty)2.7 Queue.get_nowait() 相当于 Queue.get(blockFalse)block当队列中没有数据元素继续取数据时直接引发 queue.Empty 异常。 示例如下 import queue try:q queue.Queue()q.get_nowait() # 队列为空往队列中取数据时直接引发 queue.Empty 异常 except queue.Empty:print(queue.Empty)3 Queue、LifoQueue 和 PriorityQueue 对象的高级使用方法 SimpleQueue 是 Python 3.7 版本中新加入的特性与 Queue、LifoQueue 和 PriorityQueue 三种队列相比缺少了 task_done 和 join 的高级使用方法所以才会取名叫 Simple 了下面介绍一下 task_done 和 join 的使用方法。 task_done表示队列内的数据元素已经被取出即每个 get 用于获取一个数据元素 后续调用 task_done 告诉队列该数据的处理已经完成。如果被调用的次数多于放入队列中的元素个数将引发 ValueError 异常。 join一直阻塞直到队列中的所有数据元素都被取出和执行只要有元素添加到 queue 中就会增加。当未完成任务的计数等于0join 就不会阻塞。 示例如下 import queue q queue.Queue() q.put(python) q.put(-) q.put(100) for i in range(3):print(q.get())q.task_done() # 如果不执行 task_donejoin 会一直处于阻塞状态等待 task_done 告知它数据的处理已经完成 q.join()下面是一个经典示例生产者和消费者线程分别生产数据和消费数据先生产后消费。采用 task_done 和 join 确保处理信息在多个线程间安全交换生产者生产的数据能够全部被消费者消费掉。 from queue import Queue import random import threading import time#生产者线程 class Producer(threading.Thread):def __init__(self, t_name, queue):threading.Thread.__init__(self, namet_name)self.dataqueuedef run(self):for i in range(5):print (%s: %s is producing %d to the queue! %(time.ctime(), self.getName(), i))self.data.put(i) # 将生产的数据放入队列time.sleep(random.randrange(10)/5)print (%s: %s finished! %(time.ctime(), self.getName()))#消费者线程 class Consumer(threading.Thread):def __init__(self, t_name, queue):threading.Thread.__init__(self, namet_name)self.dataqueuedef run(self):for i in range(5):val self.data.get() # 拿出已经生产好的数据print (%s: %s is consuming. %d in the queue is consumed! %(time.ctime(), self.getName(), val))time.sleep(random.randrange(5))self.data.task_done() # 告诉队列有关这个数据的任务已经处理完成print (%s: %s finished! %(time.ctime(), self.getName()))#主线程 def main():queue Queue()producer Producer(Pro., queue)consumer Consumer(Con., queue)producer.start()consumer.start()queue.join() # 阻塞直到生产者生产的数据全都被消费掉producer.join() # 等待生产者线程结束consumer.join() # 等待消费者线程结束print (All threads terminate!)if __name__ __main__:main()4 总结 本节给大家介绍了 Python 的 queue 模块为 Python 工程师对该模块的使用提供了支撑让大家对 queue 模块的相关概念和使用有一个初步的了解。
http://www.zqtcl.cn/news/829027/

相关文章:

  • 山西住房建设厅官方网站建设部建造师网站
  • 加大门户网站安全制度建设wordpress切换数据库
  • 百度代理服务器株洲seo优化
  • 即刻搜索网站提交入口网站中的打赏怎么做的
  • 电子商务网站建设课后作业开发公司管理制度
  • mysql同一数据库放多少个网站表优化大师windows
  • 微信小程序插件开发seo的网站建设
  • 婚纱摄影网站建设方案WordPress 同步网易博客
  • 上海长宁网站建设公司python语言基础
  • 官方网站怎样做餐饮业手机php网站
  • 网站建设企业有哪些内容十九届六中全会
  • 如何管理手机网站首页怎么建设一个社交网站
  • 网站规则山东网站备案网站
  • 成都网站制作龙兵科技做网站原型图用什么软件
  • 鄂州网站网站建设做网站 用哪种
  • 医药公司网站建设厦门网站建设合同
  • 网站开发全程设计注册公司哪个网站
  • 广州大型网站设计公司网站总体设计怎么写
  • 福州网站制作工具搜索引擎营销的特点是什么
  • 安徽省建设干部网站新品网络推广
  • 做网站要实名吗怎样给一个公司做网站
  • 品牌官方网站建设大航母网站建设
  • 自己做音乐网站挣钱吗网站定制公司kinglink
  • 网站建设案例新闻随州程力网站建设
  • 国外网站平台龙岩天宫山缆车收费
  • 站长工具seo综合查询是什么湖北做网站
  • 青海网站建设价格建一个免费网站的流程
  • 网站备案中 解析地址asp.net企业网站框架
  • flash里鼠标可以跟随到网站上就不能跟随了蚌埠网站建设
  • 东莞茶山网站建设网络推广方案ppt