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()这里等待其它线程往里加入数据来取出
  • 相关阅读:
    learnyou 相关网站
    hdu 3038 How Many Answers Are Wrong
    hdu 3047 Zjnu Stadium 并查集高级应用
    poj 1703 Find them, Catch them
    poj 1182 食物链 (带关系的并查集)
    hdu 1233 还是畅通工程
    hdu 1325 Is It A Tree?
    hdu 1856 More is better
    hdu 1272 小希的迷宫
    POJ – 2524 Ubiquitous Religions
  • 原文地址:https://www.cnblogs.com/dangrui0725/p/9498632.html
Copyright © 2011-2022 走看看