zoukankan      html  css  js  c++  java
  • python 队列

      当必须在多个线程之间安全地交换信息时,队列在线程编程中特别有用。

      Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据架构,即队列。用来在生产者和消费者线程之间的信息传递

     1 import queue
     2 
     3 q = queue.Queue()
     4 # queue.Queue类即是一个队列的同步实现。队列长度可为无限或者有限。可通过Queue的构造函数的可选参数maxsize来设定队列长度。如果maxsize小于1就表示队列长度无限。
     5 
     6 q.put(12)
     7 # 调用队列对象的put()方法在队尾插入一个项目。put()有两个参数,第一个item为必需的,为插入项目的值;第二个block为可选参数,默认为
     8 # 1。如果队列当前为空且block为1,put()方法就使调用线程暂停,直到空出一个数据单元。如果block为0,put方法将引发Full异常。
     9 
    10 print(q.get())
    11 # 调用队列对象的get()方法从队头删除并返回一个项目。可选参数为block,默认为True。如果队列为空且block为True,get()就使调用线程暂停,直至有项目可用。如果队列为空且block为False,队列将引发Empty异常。

      常用方法:

    1 q.qsize()  # 返回队列的大小
    2 q.empty() # 返回队列为空,空为True,反之为False
    3 q.full() # 返回队列是否已经满了,满了返回true,反之False
    4 q.join() # 实际上意味着等到队列为空,在执行别的操作

      Python中的三种队列:

      1、Python Queue模块的FIFO队列先进先出。  class queue.Queue(maxsize)
      2、LIFO类似于堆,即先进后出。             class queue.LifoQueue(maxsize)
      3、还有一种是优先级队列级别越低越先出来。   class queue.PriorityQueue(maxsize)  

      实例:

     1 import threading,queue
     2 from time import sleep
     3 from random import randint
     4 
     5 class Production(threading.Thread):
     6     def run(self):
     7         while True:
     8             r = randint(0,100)
     9             q.put(r)
    10             print("生产出了%s号包子"%r)
    11             sleep(1)
    12 
    13 class Proces(threading.Thread):
    14     def run(self):
    15         while True:
    16             re = q.get()
    17             print("吃掉%s号包子"%re)
    18 
    19 if __name__ == "__main__":
    20     q=queue.Queue(6)
    21     threads = [Production(),Production(),Proces()]
    22     for i in threads:
    23         i.start()
  • 相关阅读:
    智能计算及其应用--蚁群算法
    智能计算及其应用--粒子群优化算法
    智能计算及其应用--遗传算法的改进
    智能计算及其应用--进化算法与遗传算法
    《数据挖掘:理论与算法》学习笔记(三)—数据预处理(下)
    《数据挖掘:理论与算法》学习笔记(二)—数据预处理(上)
    X V$ASM_DISKGROUP 视图解释说明
    Exhaustive Search
    Binary Search
    Linear Search
  • 原文地址:https://www.cnblogs.com/Adairye/p/9955458.html
Copyright © 2011-2022 走看看