Python常用库初探--Queue

Python里有一个常用的内置库,Queue,它是一个常规意义上的数据结构中的队列。

既然同是队列,那它和Python内置的list,还有collections里的deque在使用上有什么差别呢?

list是python中常见的数据结构,使用非常广泛,但它在操作上更接近其它语言数组(array)的概念,而并不是严格意义上的队列。

collections里的deque则是一个功能完备的双端队列,支持从头尾两端进行插入、弹出操作。

最后是本文的Queue则是一个非常典型的FIFO结构,也就是一个严格意义上的队列。不仅如此,它还是线程安全的,即使用Mutex锁来保证多线程的安全操作。这也是它广泛用于生产消费者和维护爬虫中URL队列的原因。

接下来,利用一个例子来简单看看如何利用Queue来实现一个生产消费者的例子。

import queue
import threading
import time

q=queue.Queue()

def product(arg): 
    while True: 
        q.put(str(arg)+'资源')

def consumer(arg): 
    while True: 
        print(arg,q.get()) 
        time.sleep(2)
        
for i in range(7): 
    t=threading.Thread(target=product,args=(i,)) 
    t.start()
for j in range(24): 
    t=threading.Thread(target=consumer,args=(j,)) 
    t.start()

你可能感兴趣的:(Python常用库初探--Queue)