python高阶编程(十四):并发-队列

Python的Queue模块提供线程安全的队列,如FIFO、LIFO和PriorityQueue,用于线程间同步。Queue对象的qsize()、empty()、full()、get()、put()等方法实现消息管理。task_done()和join()用于任务完成和等待所有任务执行完毕。队列能有效解决多线程中的共享变量问题。
摘要由CSDN通过智能技术生成

Python的Queue模块中提供了同步的、线程安全的队列类,包括:FIFO(先入先出)队列Queue
LIFO(后入先出)队列LifoQueue,优先级队列PriorityQueue,这些队列都实现了锁原语,能够
在多线程中直接使用。可以使用队列来实现线程间的同步。
初始化Queue()对象时(例如:q=Queue()),若括号中没有指定最大可接收的消息数量,或数量
为负值,那么就代表可接受的消息数量没有上限

Queue.qsize():返回当前队列包含的消息数量;
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.get()获取队列,timeout等待时间

# 如果block表示是否等待,如果timeout表示是否等待,
get(self, block=True, timeout=None)

Queue.put(item) 写入队列

# 如果block表示是否等待,如果timeout表示是否等待,
put(self, item, block=True, timeout=None)

Queue.get_nowait() 相当Queue.get(False)
Queue.put_nowait(item) 相当Queue.put(item, False)
Queue.task_done() 在完成一项工作之后,使用Queue.task_done()方法可以向队列发送一
个信号,表示该任务执行完毕
Queue.join() 实际上意味着等到队列中所有的任务(数据)执行完毕之后,再往下,否则一直
等待
注意点:join()是判断的依据,不单单指的是队列中没有数据,数据get出去之后,要使
用task_done()向队列发送一个信号,表示该任务执行(数据使用)完毕
1、FIFO(先入先出)队列Queue

from queue import Queue #LILO队列

2、LIFO(后入先出)队列LifoQueue

from queue import LifoQueue #LIFO队列

3、优先级队列PriorityQueue

from queue import PriorityQueue #优先队列
# 队列中的元素为元祖类型:(优先级,数据)
# 优先级越小,越先出来

1、基本使用

from queue import Queue, LifoQueue, PriorityQueue

# 实例化一个队列对象
que = Queue(2)

# ----------往队列中添加数据------------------
que.put
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值