zoukankan      html  css  js  c++  java
  • PythonStudy——线程中的几种消息队列

    Queue

    from queue import Queue,LifoQueue,PriorityQueue
    
    # 队列模块 queue
    # 类 Queue
    # 类 LifoQueue
    # 类 PriorityQueue
    
    # 与进程中的JoinableQueue 使用方式完全一样 但是没有IPC
    
    q = Queue()
    
    # 放入元素  put 方法
    q.put("123")
    q.put("456")
    q.put("789")
    
    # 取出元素  get方法
    # 方法一 (基础版取值)
    print(q.get())
    print(q.get())
    
    # 方法二 (高级版取值)
    # 设置阻塞选项block 默认为True  )
    # 设置超时选项timeout 默认为None
    # 如果在阻塞情况下超时取不到值,则抛出异常
    # get(self, block=True, timeout=None)
    print(q.get(block=True,timeout=1))
    
    # 告知队列任务完成
    q.task_done()
    # 优先完成当前队列任务,完成不了阻塞
    # q.join()
    from queue import Queue,LifoQueue,PriorityQueue
    
    # 队列模块 queue
    # 类 Queue
    # 类 LifoQueue
    # 类 PriorityQueue
    
    # 与进程中的JoinableQueue 使用方式完全一样 但是没有IPC
    
    q = Queue()
    
    # 放入元素  put 方法
    q.put("123")
    q.put("456")
    q.put("789")
    
    # 取出元素  get方法
    # 方法一 (基础版取值)
    print(q.get())
    print(q.get())
    
    # 方法二 (高级版取值)
    # 设置阻塞选项block 默认为True  )
    # 设置超时选项timeout 默认为None
    # 如果在阻塞情况下超时取不到值,则抛出异常
    # get(self, block=True, timeout=None)
    print(q.get(block=True,timeout=1))
    
    # 告知队列任务完成
    q.task_done()
    # 优先完成当前队列任务,完成不了阻塞
    # q.join()

    LifoQueue

    from queue import LifoQueue
    
    # last in first out
    # 后进先出队列
    # 先进后出 模拟堆栈
    # 除了顺序以外 其他都一样
    lifoqueue = LifoQueue()
    
    lifoqueue.put("123")
    lifoqueue.put("456")
    lifoqueue.put("789")
    
    print(lifoqueue.get())
    print(lifoqueue.get())
    print(lifoqueue.get())

    PriorityQueue

    from queue import PriorityQueue
    
    
    # 具备优先级的队列
    # 可以存储一个可以比较大小的对象
    # 比较结果越小的优先级越高
    # 自定义的对象,除非定义了__eq__方法,否则是无法进行比较的(不能使用比较运算符) 所以不能存储
    
    # pq = PriorityQueue()
    # pq.put("222")
    # pq.put("111")
    # pq.put("333")
    # pq.put(34234)
    # TypeError: '<' not supported between instances of 'int' and 'str'
    # 需要保证存入优先队列内部的值是同一个类型
    
    # print(pq.get())
    # print(pq.get())
    # print(pq.get())
    
    
    # 类的比较运算模拟
    class Aa(object):
        # 初始化
        def __init__(self, num):
            self.num = num
    
        # 小于运算 litter than
        def __lt__(self, other):
            return self.num < other.num, "小于"
    
        # 小于等于 litter equal
        def __le__(self, other):
            return self.num <= other.num,"小于等于"
    
        # 大于运算 greater than
        def __gt__(self, other):
            return self.num > other.num, "大于"
    
        # 大于等于 greater equal
        def __ge__(self, other):
            return self.num >= other.num,"大于等于"
    
        # 等于运算 equal
        def __eq__(self, other):
            return self.num == other.num,"等于"
    
        # 不等于 not equal
        def __ne__(self, other):
            return self.num != other.num,"不等于"
    
    print(Aa(100) >= Aa(200))
    print(Aa(100) <= Aa(200))
    print(Aa(100) > Aa(200))
    print(Aa(100) < Aa(200))
    print(Aa(100) != Aa(200))
    print(Aa(100) == Aa(200))
    # (False, '大于等于')
    # (True, '小于等于')
    # (False, '大于')
    # (True, '小于')
    # (True, '不等于')
    # (False, '等于')
  • 相关阅读:
    Ant学习实例
    ant 使用指南
    tomcat配置管理用户名密码
    纯JAVA驱动:sqlserver版本不同,驱动与连接也有所区别
    STRUTS2获得session和request
    SSH整合,"sessionFactory " or "hibernateTemplate " is required异常
    tmp
    让Tomcat支持中文文件名
    postgreSQL初步使用总结
    postgreSQL9.1忘记postgres用户密码怎么办
  • 原文地址:https://www.cnblogs.com/tingguoguoyo/p/10990755.html
Copyright © 2011-2022 走看看