• 队列 一种数据结构(多线程利器)


    # 队列 一种数据结构(多线程利器)
    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()这里等待其它线程往里加入数据来取出
  • 相关阅读:
    一篇文章高效定位iframe
    URL与视图函数的映射
    include标签—引用文件路径
    UnitTest单元测试框架解析【实用篇】
    【案例演练】测试器与模板继承
    2招带你快速获取响应头与发送头
    dede网站如何更新地图sitemap.html
    申请微信小程序流程步骤
    phpstudy本地配置--dede织梦网
    stylus样式开发的使用----vue
  • 原文地址:https://www.cnblogs.com/dangrui0725/p/9498632.html
Copyright © 2020-2023  润新知