zoukankan      html  css  js  c++  java
  • python-Queue

    Queue队列作用

    • 解耦:使程序直接实现松耦合,修改一个函数,不会有串联关系。
    • 提高处理效率:FIFO = 现进先出,LIFO = 后入先出。

    Queue的使用

    import multiprocessing
    
    # 创建一个长度为3的队伍
    queue = multiprocessing.Queue(5)
    # 向队列中放值
    queue.put(1)
    queue.put("hehe")
    queue.put((1, 2, 3))
    queue.put([4, 5, 6])
    queue.put({"a": 1, "b": 2})
    
    # 队列长度为5,放入第6个数据后,队列就进入了阻塞状态,默认会等待队列取出值后再放入新的值
    # queue.put(100)
    
    # 当队列已经为空的时候,再次get(),程序进入阻塞状态,等待放入新的值到队列,然后再取
    # 队列中取值
    value = queue.get()
    print(value)
    print("....................")

    利用Queue,实现进程间的通信

    import multiprocessing
    import time
    
    
    # 写数据到队列
    def write_queue(queue):
        for i in range(10):
            # 判断队列是否已满
            if queue.full():
                print("队列已满")
                break
            queue.put(i)
            print("已写入:", i)
            time.sleep(0.5)
    
    
    # 从队列中读数据
    def read_queue(queue):
        while True:
            # 判断队列是否为空
            if queue.qsize() == 0:
                print("队列已空")
                break
            value = queue.get()
            print("已取值:", value)
    
    
    if __name__ == '__main__':
        # 创建一个空的队列
        queue = multiprocessing.Queue(5)
        # 创建两个进程,分别写数据、读数据
        w_process = multiprocessing.Process(target=write_queue, args=(queue,))
        r_process = multiprocessing.Process(target=read_queue, args=(queue,))
        w_process.start()
        # join() 优先让写数据的进程执行完,再执行读数据的进程
        w_process.join()
        r_process.start()
  • 相关阅读:
    Win10桌面点右键一直卡顿转圈怎么解决
    Ubuntu 中检查笔记本 CPU 的温度
    aria2的安装与配置
    Downloading Vim
    如何在Ubuntu 18.04上安装Python 3.8
    理解 chroot
    Ubuntu快捷方式存放的位置
    安装ubuntu双系统后,找不到windows启动项的解决方法
    socks5 协议简介
    mybatis源码1.3 MapperMethod
  • 原文地址:https://www.cnblogs.com/wakey/p/13259102.html
Copyright © 2011-2022 走看看