【发布时间】:2020-03-23 13:19:44
【问题描述】:
我有一个屏障实现,使用 PAIR/PAIR 互连。
服务器端将向客户端发送 JSON 消息,然后等待客户端发送消息。我将在一次测试中发送 40000 条消息,然后重复 10 次以计算平均使用时间。
pair_Server.py:
import zmq
import random
import sys
import time
context = zmq.Context()
socket = context.socket(zmq.PAIR)
socket.bind("tcp://*:5556")
totalTime = 0
for testCount in range(10):
isFirstSend = True
startTime = 0
for num in range(40000):
socket.send_json({ 'num' : num })
if isFirstSend:
isFirstSend = False
startTime = time.time()
msg = socket.recv_json()
totalTime += (time.time() - startTime)
print("Finish test {}".format(testCount))
print(totalTime / 10)
pair_Client.py:
import zmq
import random
import sys
import time
context = zmq.Context()
socket = context.socket(zmq.PAIR)
socket.connect("tcp://localhost:5556")
while True:
msg = socket.recv_json()
socket.send_json(msg)
输出时间花费大约 4.3 秒。然后我移除障碍物。服务器现在只会向客户端发送 JSON 消息,不需要等待回复。 10回合后。平均花费时间为 0.3 秒。
我知道速度会变快,但是差别太大了,请问我是不是用错了实现。我已经尝试PUSH/PULL 套接字进行类似的实现并得到类似的结果。
【问题讨论】:
标签: python-3.x performance zeromq pyzmq low-latency