zoukankan      html  css  js  c++  java
  • python队列

    先入先出队列:

    import queue
    
    q = queue.Queue(10) # 10为队列长度
    
    for i in range(5):
        q.put(i, block=False)  # block=False为非阻塞,默认为阻塞
        print(q.qsize())    # 队列元素个数
    
    q.put('hehe', timeout=2)    # 超时时间为2秒
    print(q.full())     # 判断队列是否满了
    print(q.maxsize)    # 队列最大个数
    
    while not q.empty():    # 队列是否为空,不为空就取数据
        print(q.get())      # get时也是默认阻塞的,其他参数与put相同
        q.task_done()       # 阻塞进程,当队列中任务执行完毕后,不再阻塞。表示任务执行完毕
    
    q.join()
    先入先出(FIFO)

    task_done()意味着之前入队的一个任务已经完成。由队列的消费者线程调用,每一个get()调用得到一个任务,接下来的task_done()调用告诉队列该任务已经执行完毕

    如果当前一个join()正在阻塞,它将在队列中的所有任务都处理完时恢复执行(即get后又task_done)

    常用方法:

    q.qsize() 返回队列的大小
    q.empty() 如果队列为空,返回True,反之False
    q.full() 如果队列满了,返回True,反之False
    q.full 与 maxsize 大小对应
    q.get([block[, timeout]]) 获取队列,timeout等待时间
    q.get_nowait() 相当q.get(False)
    非阻塞 q.put(item) 写入队列,timeout等待时间
    q.put_nowait(item) 相当q.put(item, False)
    q.task_done() 在完成一项工作之后,q.task_done() 函数向任务已经完成的队列发送一个信号
    q.join() 实际上意味着等到队列为空,再执行别的操作

    先入后出队列(FILO):

    import queue
    q = queue.LifoQueue()
    for i in range(10):
        q.put(i)
    
    while not q.empty():
        print(q.get())
    先入后出

    优先级队列:

    优先级队列
    import queue
    q = queue.PriorityQueue()
    q.put((1, 'cable'))
    q.put((2, 'caocao'))
    q.put((3, 'sunquan'))
    q.put((2, 'liubei'))        # 优先级相同的时候,先入者为先
    
    while not q.empty():
        print(q.get())
    优先级队列

    双向队列:

    双向队列
    import queue
    q = queue.deque()
    q.append(123)
    q.append(456)
    q.appendleft('hehe')
    print(q.pop())
    print(q.popleft())
    双向队列
  • 相关阅读:
    vue element-ui 饿了么布局,gutter间距碰上bordr 会失效
    Linux 常用命令
    阿里云部署,ubuntu, 连接服务器 |更新源| 安装node |安装mysql
    常用 shell 命令 chmod | root
    node 进程管理 child_process [spawn,exec] | 珠峰培训node正式课 网络爬虫
    html2canvas用法的总结(转载)
    使用nvm-windows安装nodejs遇到的问题(转载)
    Can’t call setState (or forceUpdate) on an unmounted component 警告处理方法
    webpack 搭建问题汇总
    webpack执行命令参数
  • 原文地址:https://www.cnblogs.com/caibao666/p/6841492.html
Copyright © 2011-2022 走看看