Я получаю примерно на два порядка быстрее, чем это (~ 0,01 мс, 3,4 ГГц, i7-6700), может быть, localhost
разрешается где-то странно, и ему нужно повторить попытку?
ваш код также не делаетработа для меня, выкладываю код, который я использовал.сначала на стороне сервера:
import socket
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.bind(('localhost',6000))
while True:
data, addr = s.recvfrom(1024)
s.sendto(b'',addr)
теперь на стороне клиента:
import socket
from time import time
addr = socket.getaddrinfo(
'localhost', 6000,
socket.AF_INET, socket.SOCK_DGRAM)[0]
with socket.socket(*addr[:3]) as s:
s.connect(addr[4])
for i in range(1000):
t1 = time()
s.send(b'')
t2 = time()
s.recv(1024)
t3 = time()
if i % 100 == 0:
print('{:.3f}ms {:.3f}ms'.format((t2 - t1) * 1000, (t3 - t2) * 1000))
обратите внимание, что я использую socket.connect()
, чтобы попытаться сократить время разрешения, но это, похоже, не делаетлюбая разница для меня.Я получаю:
0.218ms 0.006ms
0.004ms 0.010ms
0.004ms 0.007ms
0.004ms 0.008ms
0.004ms 0.011ms
0.004ms 0.010ms
0.004ms 0.010ms
0.004ms 0.009ms
0.004ms 0.010ms
0.004ms 0.008ms
назад, т. Е. Первый раз медленно, потом быстро
доменные сокеты unix могут быть быстрее, если вы меньше заботитесь о переносимости, в противном случае вы можете попробовать zeromq с хорошими пакетами Python