python笔记:阻塞队列

2019-11-22 09:41:41 浏览数 (1)

在python中,提供了线程安全的阻塞队列queue。这使得对信号量的需求降低了不少。能很简单的实现生产消费者模式。

下面是一个例子,实现两个阻塞队列,并且对它们同时进行监听取数据。

代码语言:javascript复制
import queue
from multiprocessing.dummy import Pool as ThreadPool
import time

q1 = queue.Queue(maxsize=0)
q2 = queue.Queue(maxsize=0)

combine = queue.Queue(maxsize=0)

def monitor(q):
    while True:
        combine.put((q,q.get()))

def test_insert():
    for i in range(10):
        q1.put(i)
        time.sleep(0.1)
        q2.put(i)

p = ThreadPool(4)
p.apply_async(monitor, (q1,))
p.apply_async(monitor, (q2,))
p.apply_async(test_insert)


while True:
    temp_q, temp_data = combine.get()
    print(temp_q, temp_data)

0 人点赞