线程queue
线程queue,线程共享一个进程数据,为什么还要使用queue?因为共享数据啊,不用queue就需要自己用锁保证数据安全
队列,队列为空get方法会被阻塞,队列满后put方法被阻塞
import queue q=queue.Queue(5)#先进先出->队列,并设置大小 q.put(1) q.put("a") print(q.get()) print(q.get())
队列其他方法
q=queue.Queue(5)#先进先出->队列,并设置大小 q.put(1,block=True)#block方法默认阻塞,可以设置成False,满后抛出异常 q.put(1,block=True,timeout=3)#满后阻塞3秒,3秒后还是放不进去则抛出异常 q.put(2,block=False)#等同于q.put_nowait(2 q.get(block=True)#block默认为True q.get(block=False)#空则抛出异常,等同于q.get_nowait() q.get(block=True,timeout=3)#等待3秒,3秒后还是为空则抛出异常
堆栈,先进先出。使用方法和Queue()一样
q1=queue.LifoQueue(3)#后进先出队列--->堆栈
优先级队列
q2.put((10,"one"))#元组方式,第一个表示为优先级,数字越小优先级越高,第二个表示内容 q2.put((9,"two"))