【问题标题】:Calculate RTT with millisecond in Python 3在 Python 3 中用毫秒计算 RTT
【发布时间】:2023-01-09 01:27:15
【问题描述】:
send_time_ms = time.time()
s.send(smth)
s.send(smth)
data = s.recv(1024)
data = data.decode("utf-8")
recv_time_ms = time.time()
rtt_in_ms = (recv_time_ms - send_time_ms)
print(rtt_in_ms)
我想以毫秒为单位并尽可能准确地测量 RTT 时间。此代码中的输出是一个数字,如“1.34564”。这段代码是否正确,如果为真,是否可以更准确地测量值?
【问题讨论】:
标签:
python
python-3.x
time
rounding
【解决方案1】:
考虑使用time.perf_counter:
... 具有最高可用分辨率的时钟,用于测量短时间。
我建议使用装饰器。这使逻辑保持不变,也可以轻松地应用于其他功能。
import time
import functools
def measure_time(fn):
@functools.wraps(fn)
def wrapper(*args, **kwargs):
tic = time.perf_counter()
fn_result = fn(*args, **kwargs)
toc = time.perf_counter()
print(f"{fn.__name__} took {toc - tic} seconds")
return fn_result
return wrapper
用法:
@measure_time
def send_something(target, payload):
target.send(payload)
data = target.recv(1024)
data = data.decode("utf-8")
您可能希望将 print 换成您想要的 logger。