实现生产者消费者问题csdn
时间: 2023-11-09 22:58:51 浏览: 42
生产者消费者问题是一个经典的多线程同步问题,具体实现可以使用锁、条件变量等方式。下面是一个使用Python threading库以及queue模块实现的生产者消费者问题示例代码:
```python
import threading
import queue
import time
class Producer(threading.Thread):
def __init__(self, name, queue):
threading.Thread.__init__(self, name=name)
self.queue = queue
def run(self):
while True:
if self.queue.qsize() < 10:
item = time.time()
self.queue.put(item)
print('{} produced item: {}'.format(self.getName(), item))
time.sleep(1)
class Consumer(threading.Thread):
def __init__(self, name, queue):
threading.Thread.__init__(self, name=name)
self.queue = queue
def run(self):
while True:
if self.queue.qsize() > 0:
item = self.queue.get()
print('{} consumed item: {}'.format(self.getName(), item))
time.sleep(2)
if __name__ == '__main__':
q = queue.Queue()
p1 = Producer('producer1', q)
p2 = Producer('producer2', q)
c1 = Consumer('consumer1', q)
c2 = Consumer('consumer2', q)
p1.start()
p2.start()
c1.start()
c2.start()
```
在上面的代码中,Producer和Consumer分别继承自threading.Thread类,并重写了run方法。Producer线程不断地生成item并放入queue中,Consumer线程则从queue中取出item并消费。为了保证线程安全,这里使用了queue模块提供的FIFO队列,并在get和put操作前后使用了锁。