返回顶部
首页 > 资讯 > 精选 >生产消费者模型中的task_done()如何作用
  • 345
分享到

生产消费者模型中的task_done()如何作用

2023-07-05 06:07:39 345人浏览 安东尼
摘要

这篇文章主要讲解了“生产消费者模型中的task_done()如何作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“生产消费者模型中的task_done()如何作用”吧!tase_done()

这篇文章主要讲解了“生产消费者模型中的task_done()如何作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“生产消费者模型中的task_done()如何作用”吧!

    tase_done()的作用:

    只有消费者把队列所有的数据处理完毕,queue.join()才会停止阻塞

    代码解释

    #关于tase_done()的作用:只有消费者把队列所有的数据处理完毕,queue.join()才会停止阻塞import timefrom queue import Queuefrom threading import Threadq = Queue()def produce():    for i in range(10):        q.put(i)        print('生产:',i)    print('生产任务完毕!')    q.join()    print(produce.__name__,'函数结束!')def consumer():    for i in range(10):        print('消费:', q.get())        q.task_done()        # if i == 4:        #     print('休息1s...')        #     time.sleep(1)#sleep作用:查看生产者是否阻塞    print(consumer.__name__,'函数结束!')pro = Thread(target=produce)con = Thread(target=consumer)pro.start()con.start()con.join()print('消费者任务完成')pro.join()print('生产者任务完成')

    生产: 0
    生产: 1
    生产: 2
    生产: 3
    生产: 4
    生产: 5
    消费: 0
    消费: 1
    消费: 2
    消费: 3
    消费: 4
    消费: 5
    生产: 6
    生产: 7
    生产:8
    消费: 6
    消费: 7
    消费: 8
    生产: 9
    生产任务完毕!
    消费: 9
    consumer 函数结束!
    produce 函数结束!
    消费者任务完成
    生产者任务完成

    说明:生产任务已经完毕为什么没有直接produce函数结束?

    说明这里产生了阻塞,产生阻塞的原因是因为消费者没有处理完生产者所有任务。

    tase_done()的作用:只有消费者把队列所有的数据处理完毕,queue.join()才会停止阻塞所以才会有produce函数结束!然后生产任务结束。

    对比解释看效果

    注释掉q.task_done()和q.join()

    #关于tase_done()的作用:只有消费者把队列所有的数据处理完毕,queue.join()才会停止阻塞import timefrom queue import Queuefrom threading import Threadq = Queue()def produce():    for i in range(10):        q.put(i)    print('生产任务完毕!')    # q.join()    # if i == 4:        #     print('休息1s...')        #     time.sleep(1)#sleep作用:查看生产者是否阻塞    print(produce.__name__,'函数结束!')def consumer():    for i in range(10):        print('消费:', q.get())        # q.task_done()    print(consumer.__name__,'函数结束!')pro = Thread(target=produce)con = Thread(target=consumer)pro.start()con.start()con.join()print('消费者任务完成')pro.join()print('生产者任务完成')

    生产: 0
    生产: 1
    生产: 2
    生产: 3
    生产: 4
    生产: 5
    生产: 6
    生产: 7
    生产: 8
    生产: 9
    消费: 0
    消费: 1
    生产任务完毕!
    produce 函数结束!
    消费: 2
    消费: 3
    消费: 4
    消费: 5
    消费: 6
    消费: 7
    消费: 8
    消费: 9
    consumer 函数结束!
    消费者任务完成
    生产者任务完成

    说明:不带task_done()和join()情况下生产任务结束,produce函数立刻结束,并没有等待消费者处理完所有任务立即结束。

    仅注释掉q.task_done()**

    #关于tase_done()的作用:只有消费者把队列所有的数据处理完毕,queue.join()才会停止阻塞import timefrom queue import Queuefrom threading import Threadq = Queue()def produce():    for i in range(10):        q.put(i)    print('生产任务完毕!')    q.join()    print(produce.__name__,'函数结束!')def consumer():    for i in range(10):        print('消费:', q.get())        # q.task_done()        # if i == 4:        #     print('休息1s...')        #     time.sleep(1)#sleep作用:查看生产者是否阻塞    print(consumer.__name__,'函数结束!')pro = Thread(target=produce)con = Thread(target=consumer)pro.start()con.start()con.join()print('消费者任务完成')pro.join()print('生产者任务完成')

    生产: 0
    生产: 1
    生产: 2
    生产: 3
    生产: 4
    生产: 5
    生产: 6
    生产: 7
    生产: 8
    生产: 9
    生产任务完毕!
    消费: 0
    消费: 1
    消费: 2
    消费: 3
    消费: 4
    消费: 5
    消费: 6
    消费: 7
    消费: 8
    消费: 9
    consumer 函数结束!
    消费者任务完成
    。。。阻塞。。。

    说明:消费者已经把任务完成了,但是produce函数却一直阻塞没有结束。

    感谢各位的阅读,以上就是“生产消费者模型中的task_done()如何作用”的内容了,经过本文的学习后,相信大家对生产消费者模型中的task_done()如何作用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    --结束END--

    本文标题: 生产消费者模型中的task_done()如何作用

    本文链接: https://lsjlt.com/news/350020.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • 生产消费者模型中的task_done()如何作用
      这篇文章主要讲解了“生产消费者模型中的task_done()如何作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“生产消费者模型中的task_done()如何作用”吧!tase_done()...
      99+
      2023-07-05
    • 关于生产消费者模型中task_done()的具体作用
      目录直奔主题代码解释对比解释看效果注释掉q.task_done()和q.join()仅注释掉q.task_done()**总结最后直奔主题 tase_done()的作用: 只有消费者...
      99+
      2023-02-25
      生产消费者模型 task_done()的作用 生产消费者
    • Java中的生产者/消费者模型
      一、什么是生产者/消费者模型 生产者-消费者模型(Producer-Consumer problem)是一个非常经典的多线程并发协作的模型。 比如某个模块负责生产数据,而另一个模块负责处理数据。产生数据的模块就形象地被称为生产者;而处理数据...
      99+
      2023-10-05
      java 多线程 wait notify notifyAll
    • 生产者、消费者模型---Queue类
      Queue队列在几乎每种编程语言都会有,python的列表隐藏的一个特点就是一个后进先出(LIFO)队列。而本文所讨论的Queue是python标准库queue中的一个类。它的原理与列表相似,但是先进先出(FIFO)队列。而内部实现更为完...
      99+
      2023-01-30
      生产者 模型 消费者
    • python 的生产者和消费者模式
      目录python 的生产者和消费者模式一、生产者消费者模式概述二、为什么使用生产者消费者模式三、什么是生产者消费者模式四、代码案例1、定义一个生产者2、定义一个消费者3、定义一个队列...
      99+
      2024-04-02
    • Python生产者与消费者模型中的优势有哪些
      这篇文章主要介绍“Python生产者与消费者模型中的优势有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python生产者与消费者模型中的优势有哪些”文章能帮助大家解决问题。生产者消费者模型具体...
      99+
      2023-07-05
    • Queue 实现生产者消费者模型(实例讲解)
      Python中,队列是线程间最常用的交换数据的形式。 Python Queue模块有三种队列及构造函数: 1、Python Queue模块的FIFO队列先进先出。 class Queue.Queue(max...
      99+
      2022-06-04
      生产者 实例 模型
    • Go语言如何实现一个简单生产者消费者模型
      这篇文章给大家分享的是有关Go语言如何实现一个简单生产者消费者模型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、生产者消费者模型生产者消费者模型:某个模块(函数等〉负责产生数据,这些数据由另一个模块来负责处理...
      99+
      2023-06-22
    • java中BlockingQueue如何实现生产者消费者
      这篇文章主要为大家展示了“java中BlockingQueue如何实现生产者消费者”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中BlockingQueue如何实现生产者消费者”这篇文章...
      99+
      2023-05-30
      java blockingqueue
    • python多进程中的生产者和消费者模型怎么实现
      这篇文章主要介绍了python多进程中的生产者和消费者模型怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python多进程中的生产者和消费者模型怎么实现文章都会有所收获,下面我们一起来看看吧。Pytho...
      99+
      2023-07-05
    • 理解生产者消费者模型及在Python编程中的运用实例
      什么是生产者消费者模型 在 工作中,大家可能会碰到这样一种情况:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产 生数据的模块,就形象地称为生产者...
      99+
      2022-06-04
      生产者 实例 模型
    • Go语言实现一个简单生产者消费者模型
      目录一、生产者消费者模型二、Go语言实现1、无缓冲channel2、有缓冲channel三、实际应用简介:介绍生产者消费者模型,及go简单实现的demo。 一、生产者消费者模型...
      99+
      2022-06-07
      GO 模型 go语言
    • 如何限制生产者和消费者读取消息?
      php小编子墨在软件开发过程中,消息队列是一种常见的通信机制,用于实现生产者和消费者之间的异步通信。然而,有时候我们希望控制生产者和消费者对消息的读取,以便更好地管理系统资源和处理高峰...
      99+
      2024-02-11
    • 怎么在Python中利用 Asyncio模块实现一个生产消费者模型
      本文章向大家介绍怎么在Python中利用 Asyncio模块实现一个生产消费者模型的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Python主要用来做什么Python主要应用于:1、Web开发;2、数...
      99+
      2023-06-06
    • Java多线程中消费者生产者模式怎么实现
      这篇文章主要讲解了“Java多线程中消费者生产者模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java多线程中消费者生产者模式怎么实现”吧!  //主类&nb...
      99+
      2023-06-17
    • Kafka中生产者和消费者指的是什么
      在Kafka中,生产者和消费者是指Kafka消息系统中参与消息传递的两种角色。 生产者是指负责向Kafka集群中的主题(topic)...
      99+
      2024-03-14
      Kafka
    • Python中怎么利用多线程实现生产者消费者模式
      Python中怎么利用多线程实现生产者消费者模式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是生产者消费者模式在软件开发的过程中,经常碰到这样的场景:某些模块负责生产数据...
      99+
      2023-06-17
    • JAVA项目中的生产者消费者如何利用多线程实现
      今天就跟大家聊聊有关JAVA项目中的生产者消费者如何利用多线程实现,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JAVA多线程实现生产者消费者的实例详解Product.Javapac...
      99+
      2023-05-31
      java 多线程 ava
    • GoLang中怎么利用生产者消费者模式解决并发问题
      这期内容当中小编将会给大家带来有关GoLang中怎么利用生产者消费者模式解决并发问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在主函数中创建一个管道,接收字符串类型产生数据,把数据放到管道中在管道中取...
      99+
      2023-06-05
    • Python自定义进程池实例分析【生产者、消费者模型问题】
      本文实例分析了Python自定义进程池。分享给大家供大家参考,具体如下: 代码说明一切: #encoding=utf-8 #author: walker #date: 2014-05-21 #funct...
      99+
      2022-06-04
      生产者 自定义 实例
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作