两个线程之间的通信通常被称作生产者与消费者
def produce(q):
i = 0
while i < 10:
num = random.randint(1, 100)
q.put('生产者生产数据:%d' % num)
print('生产者生产数据:%d' % num)
time.sleep(1)
i += 1
q.put(None)
# 完成任务
q.task_done()
def consume(q):
while True:
item = q.get()
if item is None:
break
print('消费者获取到:%s' % item)
time.sleep(2)
q.task_done()
if __name__ == '__main__':
q = queue.Queue()
# 创建生产者
th = threading.Thread(target = produce, args = (q,))
th.start()
# 创建消费者
tc = threading.Thread(target = consume, args = (q,))
tc.start()
th.join()
tc.join()
# 输出结果:
生产者生产数据:95
消费者获取到:生产者生产数据:95
生产者生产数据:47
消费者获取到:生产者生产数据:47
生产者生产数据:88
生产者生产数据:23
消费者获取到:生产者生产数据:88
生产者生产数据:88
生产者生产数据:38
消费者获取到:生产者生产数据:23
生产者生产数据:7
生产者生产数据:95
消费者获取到:生产者生产数据:88
生产者生产数据:44
生产者生产数据:41
消费者获取到:生产者生产数据:38
消费者获取到:生产者生产数据:7
消费者获取到:生产者生产数据:95
消费者获取到:生产者生产数据:44
消费者获取到:生产者生产数据:41
本文通过一个具体的Python示例,展示了如何使用线程间通信实现生产者消费者模式。生产者线程负责生成数据并放入队列,消费者线程从队列中取出数据进行处理。该模式有效地解决了多线程间的同步问题。

被折叠的 条评论
为什么被折叠?



