zoukankan      html  css  js  c++  java
  • 六.并发编程 (线程对列)

    一 .线程队列(queue)和进程差不多(参照进程)7

    一. 线程队列
    
      引入线程队列 : import queue  #和普通队列引入方法相同
    
      线程队列方法 : 
        q = queue.Queue()  #实例化对列,先进先出
    
        q = queue.LifoQueue()  #实例化队列,后进先出  ( Last in, first out )
    
        q = queue.PriorityQueue()  #实例化队列,优先级队列
    
          优先级队列,put() 方法接收的是一个元组,第一个元素是优先级,第二个元素是数据
    
          优先级如果为数字,按照数字大小比较
    
          如果优先级是字符串或特殊字符,按照字符串或特殊字符的ASCII码比较,如果ASCII码相同,按照先进先出原则取出

    1.队列先进先出(queue)

    import queue
    
    q=queue.Queue()
    q.put('first')
    q.put('second')
    q.put('third')
    
    print(q.get())
    print(q.get())
    print(q.get())
    '''
    结果(先进先出):
    first
    second
    third
    '''

    2.栈先进后出(queue.LifoQueue())

    import queue
    
    q=queue.LifoQueue()
    q.put('first')
    q.put('second')
    q.put('third')
    
    print(q.get())
    print(q.get())
    print(q.get())
    '''
    结果(后进先出):
    third
    second
    first
    '''

    3.队列生产者消费者

    from  threading import Thread,Event
    import queue,time
    
    def put_a(name,food,q):
        for i in range(10):
            ret="%s生产%s-->%s个"%(name,food,i)
            q.put(ret)
            print(ret)
        q.put(None)
    
    
    def get_a(q,name):
        while True:
            ret=q.get()
            if ret is None:break
            time.sleep(1)
            print("%s---->吃%s"%(name,ret))
    
    q=queue.Queue()
    p1=Thread(target=put_a,args=("张三","包子",q))
    p2=Thread(target=get_a,args=(q,"李四"))
    p1.start()
    p1.join()
    
    p2.start()

     4. 存储数据时可设置优先级的队列(queue.PriorityQueue(maxsize=0))

    import queue
    
    q=queue.PriorityQueue()
    #put进入一个元组,元组的第一个元素是优先级(通常是数字,也可以是非数字之间的比较),数字越小优先级越高
    q.put((20,'a'))
    q.put((10,'b'))
    q.put((30,'c'))
    
    print(q.get())
    print(q.get())
    print(q.get())
    '''
    结果(数字越小优先级越高,优先级高的优先出队):
    (10, 'b')
    (20, 'a')
    (30, 'c')
    '''
  • 相关阅读:
    教你Python3实现12306火车票自动抢票,小白必学
    Spring Security 中如何快速查看登录 IP地址等信息?一招搞定
    方程组及其解的判定
    向量空间
    极大无关组和向量组等价
    向量组的线性相关与线性无关
    向量间的线性关系
    向量的概念和运算
    矩阵的秩和秩的性质
    利用初等变换求逆矩阵和解矩阵方程
  • 原文地址:https://www.cnblogs.com/Sup-to/p/11207093.html
Copyright © 2011-2022 走看看