前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 线程通信queue

python 线程通信queue

作者头像
用户5760343
发布2022-05-13 08:42:51
3760
发布2022-05-13 08:42:51
举报
文章被收录于专栏:sktj

from threading import Thread, Event from queue import Queue import time import random class producer(Thread): def init(self, queue): Thread.init(self) self.queue = queue

代码语言:javascript
复制
def run(self) :
    for i in range(10):
        item = random.randint(0, 256)
        self.queue.put(item)
        print('Producer notify: item N° %d appended to queue by %s' % (item, self.name))
        time.sleep(1)

class consumer(Thread): def init(self, queue): Thread.init(self) self.queue = queue

代码语言:javascript
复制
def run(self):
    while True:
        item = self.queue.get()
        print('Consumer notify : %d popped from queue by %s' % (item, self.name))
        self.queue.task_done()

if name == 'main': queue = Queue() t1 = producer(queue) t2 = consumer(queue) t3 = consumer(queue) t4 = consumer(queue) t1.start() t2.start() t3.start() t4.start() t1.join() t2.join() t3.join() t4.join()

//Queue.put(item [,block[, timeout]]) //如果 block 为 True , timeout 为 None (这也是默认的选项,本例中使用默认选项),那么可能会阻塞掉,直到出现可用的位置。如果 timeout 是正整数,那么阻塞直到这个时间,就会抛出一个异常。 //如果 block 为 False ,如果队列有闲置那么会立即插入,否则就立即抛出异常( timeout 将会被忽略)。本例中, put() 检查队列是否已满,然后调用 wait() 开始等待。 //消费者使用 Queue.get([block[, timeout]]) 从队列中取回数据,queue内部也会经过锁的处理。如果队列为空,消费者阻塞。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档