Queue在Python中可以算作是一种容器,但是他和list,set,dict不一样。
1. Queue不是Python内置类型。它在Queue模块中定义。
2. 它不是iterator容器,他不能使用for... in...语法进行遍历。(没有next方法),只能使用put,get进行存取包含的值。
3.它是线程安全的。可以在多线程环境下安全使用。(进程安全级别的Queue,需要使用multiprocessing.Queue。两者方法都是一致的)
好了上代码:
from Queue import Queue
from threading import Thread
def worker():
while True:
item = q.get()
print(item)
q.task_done() #
q = Queue()
num_worker_threads = 4
for i in range(num_worker_threads):
t = Thread(target=worker)
t.daemon = True
t.start()
for item in range(30):
q.put(item)
q.join() # block until all tasks are done