• python之多线程队列


    # 一共有以下3种队列
    # 1、先进先出
    # 2、后进先出
    # 3、存储数据的时候可设置优先级的队列,设置不同的优先级,取的时候按照优先级的顺序来取

    下面介绍一下队列的方法,如果要使用队列,则需要导入一个模块queue
    import queue
    
    
    q = queue.Queue(maxsize=3)
    #创建一个队列的实例,该是对象的size是3
    
    # q.get()
    #从队列中获取值,如果队列中没有值,则会一直阻塞
    
    
    # q.qsize()
    #获取队列的size
    
    
    # q.get(timeout=3)
    #c从队列中获取值,如果获取不到值,则只等待3s,如果超过3则会报错
    # queue.Empty
    
    # q.get_nowait()的方法和q.get(timeout=3)一样的,如果拿不到会数据也会报一个queue.Empty的错
    # queue.Empty
    
    
    #可以传一个list到队列中,取出来的也是一个list
    q.put(["a","b","c"])
    data = q.get_nowait()
    print(data,type(data))
    
    # ['a', 'b', 'c'] <class 'list'>
    
    
    #我们也可以把一个实例放在队列中
    class foo(object):
        def __init__(self,n):
            self.n = n
    
    
    f = foo(2)
    
    q.put(f)
    c = q.get_nowait()
    print(c,type(c))
    
    # <__main__.foo object at 0x01D03CB0> <class '__main__.foo'>
    
    
    #判断队列是否满,队列中有3个数据,如果get了一个,则队列中的数据个数就为2了
    print(q.full())
    # False
    print(q.qsize())
    q.put("1")
    q.put({"k1":"v1"})
    q.put(["a","b","c"])
    print(q.qsize())
    
    
    # q.put("2222")
    #如果队列满了,则put会一直put不进去,这里就会一直阻塞
    
    
    # q.put("abc",timeout=2)
    #如果队列满了,加一个timeout=2.则会等待2s,如果还放不进去则会报错“queue.Full”
    
    # q.task_done()
    # q.join()
    
    
    # q.empty()
    # 判断队列是否为空
    
    
    q = queue.Queue()
    #上面这个是创建一个先进先出的队列
    
    
    q = queue.LifoQueue()
    #这里是创建一个先进后出的队列
    
    
    
    q= queue.PriorityQueue()
    #创建一个可以设置优先级的队列,存数据的时候是要用tuple的个数传数据,优先级越小,就越会被提前取出来
    
    q.put((1,["a","b","c"]))
    q.put((2,"abc"))
    
    
    print(q.get())
    
    # (1, ['a', 'b', 'c'])
    

      

  • 相关阅读:
    shop++之language
    shop++改造之ResponseEntity的坑
    shop++改造之Filter类
    mysql关联模糊查询他表字段
    mysql一张表多个字段关联另一张表查询
    html页面导出为excel表格
    layui打印html页面转成pdf
    jQuery视频格式的验证
    jQuery图片灯箱和视频灯箱
    空间谱专题16:信号个数估计
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7420685.html
Copyright © 2020-2023  润新知