首页 > 其他分享 >使用joinablequeue优化生产者消费者问题

使用joinablequeue优化生产者消费者问题

时间:2023-02-08 15:36:10浏览次数:42  
标签:joinablequeue task 生产者 jq 队列 计数器 done print 优化

#Joinablequeue队列
'''
put 存放
get 获取
task_done 计数器属性值-1
join 配合task_done使用,阻塞

put一次数据,队列的内置计数器属性值+1
get一次数据,通过task_done 让队列的内置计数器属性值-1
join:会根据队列计数器的属性值来判断是否阻塞或者放行
    队列计数器属性是等于0,代码不阻塞,放行
    队列计数器属性不等于0,代码阻塞
'''
# from multiprocessing import JoinableQueue
# jq=JoinableQueue()
# jq.put('高启强') #+1
# jq.put('安欣') #+2
# print(jq.get())
# print(jq.get())
#
# jq.task_done() #-1
# jq.task_done() #-1
# jq.join()
# print("代码执行结束")


# 使用joinablequeue改造生产者消费者模型
from multiprocessing import Process,JoinableQueue
import time,random

# 消费者模型
def consumer(q,name):
    while True:
        # 获取队列中的数据
        food=q.get()

        time.sleep(random.uniform(0.1,1))
        print('{}吃了{}'.format(name,food))
        #让队列的内置计数器属性-1
        q.task_done()

# 生产者模型

def producer(q,name,food):
    for i in range(5):
        time.sleep(random.uniform(0.1, 1))
        # 展示的生产数据
        print('{}生产了{}'.format(name,food+str(i)))
        #存储的生产数据
        q.put(food+str(i))
if __name__=='__main__':
    q=JoinableQueue()

    p1=Process(target=consumer,args=(q,'高启强'))
    p2=Process(target=producer,args=(q,'安欣','饺子'))

    p1.daemon=True
    p1.start()
    p2.start()
    p2.join()
    # 必须等待队列中的所有数据消费完毕,再放行
    q.join()

    print('程序结束')

 

标签:joinablequeue,task,生产者,jq,队列,计数器,done,print,优化
From: https://www.cnblogs.com/clls/p/17101923.html

相关文章

  • 优化数仓业务视图:过滤条件传递
    摘要:在业务功能实现时,经常会用到视图简化查询SQL。但有时候会因为视图降低查询效率,本文主要分析在业务需求满足的情况下,将有效的过滤条件传递到基表,减少运算过程中数据库需......
  • Apache 深入优化
    Apache深入优化......
  • 【MySQL高级】索引优化
    目录​​1.使用索引优化​​​​1.1数据准备​​​​1.2避免索引失效应用-全值匹配​​​​1.3避免索引失效应用-最左前缀法则​​​​1.4避免索引失效应用-其他匹配原则​......
  • 重学单调队列优化dp
    再谈单调队列优化dp。题目:CF1077F1&2PictureswithKittens(Easy&hardversion)从n个数中选出m个数,连续k个数至少选出一个,最大化选出数和。easyversion普通dp,hard则......
  • 【YBT2023寒假Day7 B】打怪兽(cdq分治)(斜率优化)
    打怪兽题目链接:YBT2023寒假Day7B题目大意有n个怪,每个怪有攻击力和血量。你每次可以选一个怪打b的伤害,如果一个怪的血量小于等于0就死了。然后每次你打完之后所......
  • 【YBT2023寒假Day7 A】出题人(线段树优化DP)
    出题人题目链接:YBT2023寒假Day7A题目大意有一个序列,你要把它分成若干份,每一份的值的和不超过m,而且每一段最大值的和最小。输出每段最大值和的最小值。思路考虑每次......
  • O0 O1 O2 O3优化原理
    为了加快代码执行的效率,很多OJ平台都会自动开启O2优化。在这里我们讲讲到底是怎么优化的。O0优化#pragmaGCCoptimize(0)1、把变量分配到寄存器。2、分析循环的会出......
  • m基于GA遗传优化算法的水库调度优化matlab仿真
    1.算法描述遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假设解置于问题的......
  • m基于GA遗传优化算法的水库调度优化matlab仿真
    1.算法描述       遗传算法GA把问题的解表示成“染色体”,在算法中也即是以二进制编码的串。并且,在执行遗传算法之前,给出一群“染色体”,也即是假设解。然后,把这些假......
  • m对比PSO,WPA,GWPA以及GWO四种优化算法的优化性能,优化目标函数为10个来自CEC2017的标
    1.算法描述        灰狼优化算法(GWO),灵感来自于灰狼.GWO算法模拟了自然界灰狼的领导层级和狩猎机制.四种类型的灰狼,如α,β,δ,w被用来模拟领导阶层。此外,还......