利用消息队列 和 进程实现 时间服务器,要求服务器进程发送时间信息到消息队列,客户端读取消息队列 获得时间信息。完整代码实现。
时间: 2023-06-07 09:11:32 浏览: 50
好的,我会为您提供代码实现。
服务端代码:
```python
import time
import multiprocessing as mp
import zmq
def run_server():
context = zmq.Context()
socket = context.socket(zmq.PUSH)
socket.bind("tcp://*:5557")
while True:
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
socket.send_string(now)
time.sleep(1)
if __name__ == '__main__':
mp.Process(target=run_server).start()
```
客户端代码:
```python
import zmq
def run_client():
context = zmq.Context()
socket = context.socket(zmq.PULL)
socket.connect("tcp://localhost:5557")
while True:
message = socket.recv_string()
print("Received time:", message)
if __name__ == '__main__':
run_client()
```
以上代码利用 ZeroMQ 的消息队列机制和 Python 的 multiprocessing 模块实现了一个简单的时间服务器。服务端在端口 5557 上等待客户端连接,每隔 1 秒就向消息队列发送当前时间。客户端连接服务器并从消息队列中读取时间消息并输出。