码农知识堂 - 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

    在这里插入图片描述

  • 相关阅读:
    Oracle常用运维SQL-SQL执行性能及锁表等查询分析
    729. 我的日程安排表 I :「模拟」&「线段树(动态开点)」&「分块 + 位运算(分桶)」
    Nginx 限流的天坑
    关于激光探测器光斑质心算法在FPGA硬件的设计
    26.【算法五章-----02】
    【CAN总线】从数字设计的角度分析CAN协议1—CAN概述
    C++常用容器总结
    紧跟新时代消费趋势,荟语酒店以创新思维打造“幸福感”消费新体验
    Android 在TextView前面添加多个任意View且不影响换行
    智慧工地:助力数字建造、智慧建造、安全建造、绿色建造
  • 原文地址: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号