【python内功修炼004】:并发编程之joinableQueue模块

一:joinableQueue的介绍

JoinableQueue([maxsize])模块 创建可连接的共享进程队列。这就像是一个Queue对象,但队列允许项目的使用者通知生产者项目已经被成功处理。通知进程是使用共享的信号和条件变量来实现。

简单解释:为可join的队列

该队列相比普通的Queue的区别在于该对列额外增加的了join函数

二:常用方法

JoinableQueue的实例p除了与Queue对象相同的方法之外还具有:
Queue常用方法:【python内功修炼002】:并发编程之多进程实例

方法 功能
q.task_done() 使用者使用此方法发出信号,表示q.get()的返回项目已经被处理。如果调用此方法的次数大于从队列中删除项目的数量,将引发ValueError异常
q.join() 生产者调用此方法进行阻塞,直到队列中所有的项目均被处理。阻塞将持续到队列中的每个项目均调用q.task_done()方法为止

三:代码示例

from multiprocessing import JoinableQueue

# 用法和Queue 相似
q = JoinableQueue()
q.put('task1')  # 队列中放入一个任务,内存计数机制 +1
q.put('task2')  # 计数机制 +1

print(q.get())  # 完成一次任务
q.task_done()   # 完成一次任务,计数机制 -1

print(q.get())  # 完成一次任务
# q.task_done()   # 完成一次任务,计数机制 -1

q.join()  # 计数机制不为0的时候,阻塞等待计数器为0 后通过

# 我注释了一个q.task_done(),程序就处于阻塞状态,放开就能通过

print('主')
发布了72 篇原创文章 · 获赞 79 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42444693/article/details/104968226