码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • queue


    在这里插入图片描述
    进程与进程之间共享数据用queue

    from multiprocessing import Process, Queue
    # 队列(FIFO)先进先出,第一个存储的数据,会被第一个取出
    # 栈(LIFO) 后进先出,最后一个存储的数据,会被第一个取出
    
    # 在python中,为我们提供了一个队列对象,通过该对象可以在进程间来共享数据
    # Queue 用来创建一个队列的实例
    # 创建对列时,可以在类中指定一个队列的大小
    q = Queue(1)
    
    # put() 用来向队列中存储数据
    q.put('hello')
    # q.put(123) 如果队列已满,调用put,会一直等待
    # q.put_nowait(456) queue.Full
    
    print(q)
    
    # get() 用于获取队列中的第一个数据
    r = q.get()
    r = q.get(timeout=3)
    
    # get() 获取数据时,如果队列没有数据,不会报错,而是一直等待
    #   它会阻塞程序的执行,直到有数据可以取出
    # r = q.get()
    # r = q.get_nowait() 该方法获取数据,如果有就获取,没有就报错queue.Empty  使用有风险,一般不使用
    
    print(r)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    在这里插入图片描述

    from multiprocessing import Process, Queue
    import time
    
    # 定义一个负责存储数据的函数
    def mk_data(q):
        for i in range(100):
            q.put(f'mk_data创建的数据{i}')
            time.sleep(0.5)
    
    # 定义一个函数负责读取数据
    def get_data(q, num):
        while 1:
            print(f'{num}读取数据', q.get())
    
    if __name__ == '__main__':
        q = Queue(3)
        mk = Process(target=mk_data, args=(q,))
        gt = Process(target=get_data, args=(q,1))
        gt2 = Process(target=get_data, args=(q, 2))
        gt3 = Process(target=get_data, args=(q, 3))
    
        mk.start()
        gt.start()
        gt2.start()
        gt3.start()
    
        mk.join()
        gt.join()
        gt2.join()
        gt3.join()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    在这里插入图片描述

  • 相关阅读:
    exe4j使用笔记(jar包转exe工具)
    技术问题分析和解决汇总,持续维护
    Java最全面试攻略,吃透25个技术栈Offer拿到手软
    点云可视化工具:mayavi、VTK、traits的安装(windows python3.8)
    三个编程思想:面向对象编程、面向接口编程、面向过程编程【概念解析系列_1】【C# 基础】
    hive解析json数据
    python+java病人跟踪治疗管理系统#计算机毕业设计源码
    设计模式:解释器模式
    【Putty】win10 / win 11:SSH 远程连接工具 Putty 下载、安装
    element ui 中文离线文档(百度云盘下载)
  • 原文地址:https://blog.csdn.net/qq_39128254/article/details/125450133
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号