zoukankan      html  css  js  c++  java
  • 队列 一种数据结构(多线程利器)

    # 队列 一种数据结构(多线程利器)
    import queue  # 导入对列模块
    
    q = queue.Queue()  # 创建一个对列对象,先进先出
    # q = queue.Queue(3)   # 创建一个对列对象,3表示队列中只能有3个值
    # q = queue.LifoQueue()    # 创建一个对列对象,后进先出
    # q = queue.PriorityQueue   # 创建一个对列对象,以优先级来出,优先级越低的先出
    
    q.put(12)  # 向对列中放入值
    q.put('hello')
    q.put({'name': 'alex'})
    q.put([1, 2], block=False)  # 加了False或block=False参数,表示队列满了情况再put就会报错,相当于q.put_nowait([1, 2])
    
    # 优先级模式的队列加入值
    # q.put([1, 12])  # 向对列中放入值,列表的第一个值为优先级数字
    # q.put([5, 'hello'])
    # q.put([3, {'name': 'alex'}])
    
    # queue中的方法
    print(q.qsize())  # 获得队列中有几个值
    print(q.empty())  # 队列是否为空
    print(q.full())  # 队列是否已满
    
    # q.task_done()  # 在完成一项式作之后,q.task_done()函数向任务已经完成的队列发送一个信号
    # q.join()  # 等到队列为空,再执行别的操作
    
    while True:
        data = q.get()  # 如果在get()中加了block=False,或False,当队列为空再取值时会报错,相当于q.get_nowait()
        print(data)
        print('-------------')
    
        # 12
        # -------------
        # hello
        # -------------
        # {'name': 'alex'}
        # -------------
        # 这时程序还没结束,在q.get()这里等待其它线程往里加入数据来取出
  • 相关阅读:
    jq隐藏页面的一行(循环隐藏10行)
    Button的OnClientClick()事件不起作用?
    Infopath自定义表单实现列表字段联动
    SharePoint 2013的传出电子邮件设置
    codeforces Looksery Cup 2015 D. Haar Features
    codeforces Looksery Cup 2015 H Degenerate Matrix
    poj3321 Apple Tree
    poj1990 MooFest
    poj2155 Matrix
    hdu1556 Color the ball
  • 原文地址:https://www.cnblogs.com/dangrui0725/p/9498632.html
Copyright © 2011-2022 走看看