锁能解决变量的共享的问题,但是不常见,锁住别人干嘛,咱们不如来好好的排下队。这样就不会死锁了,其实queue是自带锁。
队列
queue是python的标准库,俗称队列.可以直接import引用,在python2.x中,模块名为Queue。python3是小写的queue即可。
在python中,多个线程之间的数据是共享的,多个线程进行数据交换的时候,不能够保证数据的安全性和一致性,所以当多个线程需要进行数据交换的时候,队列就出现了,队列可以完美解决线程间的数据交换,保证线程间数据的安全性和一致性(简单的来说就是多线程需要加锁,很可能会造成死锁,而queue自带锁。所以多线程结合queue会好的很多。
导入:from queue import Queue
我们还是先看一个案例。queue 就是一个put和get两个操作,一个走开一个进入。
import time
from queue import Queue
from threading import Thread
from random import randint
# 3个队列
my_queue = Queue(3)
def f1(my_queus):
for i in range(3):
time.sleep(1)
num = randint(0,10)
print(num)
my_queue.put(num)
def f2(my_queus):
for i in range(3):
time.sleep(1)
num =