python解决消费者生产者问题
时间: 2023-09-08 15:08:30 浏览: 79
用Python的线程来解决生产者消费问题的示例
消费者生产者问题可以使用Python中的线程和队列来解决。具体实现可以参考以下代码:
```python
import threading
import queue
import time
# 定义全局变量
q = queue.Queue(10)
lock = threading.Lock()
# 生产者线程
class Producer(threading.Thread):
def run(self):
global q
while True:
lock.acquire()
if q.full():
lock.release()
time.sleep(1)
continue
q.put(1)
print("生产者生产了1个物品,当前队列长度为%d" % q.qsize())
lock.release()
time.sleep(1)
# 消费者线程
class Consumer(threading.Thread):
def run(self):
global q
while True:
lock.acquire()
if q.empty():
lock.release()
time.sleep(1)
continue
q.get()
print("消费者消费了1个物品,当前队列长度为%d" % q.qsize())
lock.release()
time.sleep(1)
# 启动线程
if __name__ == '__main__':
for i in range(3):
Producer().start()
for i in range(2):
Consumer().start()
```
上述代码中,我们使用了Python中的队列来作为生产者和消费者之间的缓冲区。我们创建了一个长度为10的队列,每当生产者生产一个物品时,就将该物品放入队列中,并打印当前队列长度;当消费者消费一个物品时,就从队列中取出一个物品,并打印当前队列长度。同时,我们使用了锁来保证线程之间的同步和互斥。
阅读全文