线程间通信推荐用队列

Posted whylinux

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程间通信推荐用队列相关的知识,希望对你有一定的参考价值。

# 队列是数据安全的,意思是自带锁,多线程间通信时,使用队列是好的,不会出现同一个数据被多个线程抢占,使用其他数据类型进行通信则需要自己实现锁功能

import queue

# 普通先进先出队列
# q = queue.Queue()   # 没有参数则表示队列没有指定深度
# q.put(1) # 如果队列指定了深度则到了深度后,会阻塞在这里等待队列有空间后再向队列中放入数据
# q.put_nowait()  # 队列满了也不会阻塞在这里,但会有异常
# q.get() # 从队列中获取数据,无数据后悔阻塞
# q.get_nowait()  # 从队列中获取数据,队列空时也不会阻塞,会报异常


# 先进后出队列,栈
# q = queue.LifoQueue()   # 创建先进后出队列,就是栈
# q.put(1)
# q.get()


# 优先级队列
q = queue.PriorityQueue()   # 优先级队列
q.put((20, a))    # 20表示优先级,值越小,优先级越高,越先被get获取到。第二个参数为值
q.put((10, ee))
q.put((10,c)) # 同样等级优先级的,则按照值的ascii码优先级,同优先级下,值的ascii码优先级越高的,越先被get到
q.put((30, cb))

print(q.get())  # (10, ‘c‘)

 

以上是关于线程间通信推荐用队列的主要内容,如果未能解决你的问题,请参考以下文章

8-2 如何线程间通信

线程间的通信同步方式与进程间通信方式

使用线程间通信之条件变量

生产者-消费者 用阻塞队列实现

进程间通信与线程

多线程下的队列问题