背景
最近在研究红外收发,0/1信号延迟需要达到微秒级,而 time.sleep() 达不到这么高的精度,好在 time.time() 时间戳可以实现微秒级别,故采用此方式。
代码
原理非常简单,只是做个记录。
def delay_us(t):
start, end = 0, 0
start = time.time()
offset = 10
t = (t - offset) / 1000000
while end - start < t:
end = time.time()
说明: offset 为修正值,根据实际情况修改。
验证
注意事项
仅 Linux 有效,Windows 下延迟最低 1000us,无法正常使用。