多线程并发编辑的重点,是线程之间共享数据。为了解决线程数据共享的问题,Python提供了一个数据类型
队列
可以用于在多线程并发模式下,安全的访问数据并不会造成数据共享冲突
python的编程中有四种队列模式,但是其应用场景不同,此篇文章介绍的是线程之间通信
queue
。
使用场景
总所周知,Python的多线程不是真正的多线程,但是对于io密集型操作还是能发挥其作用的,多线程并发编程的重点,是线程之间共享数据和线程间的通信,为解决线程之间数据共享的问题,Python提供了一个数据类型队列
可以用于在多线程并发的模式下,安全的访问数据并且不会造成数据共享冲突。
那么多线程之间是如何进行变量共享的呢,我们可以借助于queue
模块。
队列的性质
正常请求的多线程,如果是消费者和生产者,通过列表实现,多线程会对列表中的数据取值,会出现同时访问列表数据的情况,这时候就需要对线程进行加锁或者是线程等待,手动进行解决这个问题,但是队列会通过其模式,保证单个数据不会同时被多个线程进行访问。
queue模块
queue
可以实现多线程之间的通讯,让各个线程共享数据,生产者把任务放到队列中,供线程使用。
队列类别
- 队列Queue(FIFO)
queue.Queue(maxsize=0)
FIFO即First