异步消息处理的事例相关代码
时间: 2023-12-02 18:04:23 浏览: 23
以下是一个简单的异步消息处理的 Python 代码示例:
```python
import time
import threading
import queue
def worker(q):
while True:
message = q.get()
if message == 'quit':
break
print(f'Processing message: {message}')
time.sleep(1)
q.task_done()
q = queue.Queue()
# 启动5个 worker 线程
for i in range(5):
t = threading.Thread(target=worker, args=(q,))
t.daemon = True
t.start()
# 向队列中添加10个消息
for i in range(10):
q.put(f'Message {i}')
# 等待所有消息处理完成
q.join()
# 发送退出消息
for i in range(5):
q.put('quit')
```
在这个示例中,我们首先定义了一个 worker 函数,它会不断从队列中取出消息并处理,直到收到退出消息为止。然后我们启动了5个 worker 线程,这些线程会一直运行直到收到退出消息。
接着我们向队列中添加了10个消息,等待它们被处理完成。最后,我们向队列中添加了5个退出消息,让每个 worker 线程都退出。
这个示例中的队列使用了 Python 内置的 Queue 类,它是一个线程安全的队列实现。每个 worker 线程都会从队列中取出消息并处理,处理完成后调用 task_done() 方法告诉队列这个任务已经完成。主线程则调用 join() 方法等待所有任务完成。