使用Deque创建一个存放整数的队列。 创建一个生产者线程,每隔M毫秒往队列的尾部加入一个整数,所放的整数依次为1、2、3、…。 创建一个消费者线程,每隔N毫秒从队列的头部取出一个整数,并将其打印出来。
时间: 2024-05-15 22:16:42 浏览: 78
代码如下:
```python
import threading
import time
from collections import deque
queue = deque()
class ProducerThread(threading.Thread):
def __init__(self, interval):
threading.Thread.__init__(self)
self.interval = interval
def run(self):
global queue
i = 1
while True:
time.sleep(self.interval / 1000)
queue.append(i)
i += 1
class ConsumerThread(threading.Thread):
def __init__(self, interval):
threading.Thread.__init__(self)
self.interval = interval
def run(self):
global queue
while True:
time.sleep(self.interval / 1000)
if len(queue) > 0:
print(queue.popleft())
producer = ProducerThread(1000) # 每隔1000毫秒生产一个整数
consumer = ConsumerThread(2000) # 每隔2000毫秒消费一个整数
producer.start()
consumer.start()
producer.join()
consumer.join()
```
在这个代码中,我们使用了Python的内置Deque数据结构来实现队列。生产者线程每隔M毫秒往队列的尾部加入一个整数,消费者线程每隔N毫秒从队列的头部取出一个整数并将其打印出来。注意,我们在访问队列时需要使用Python内置的线程安全的deque.popleft()方法来避免竞态条件。
阅读全文