Python 中实现微秒级延迟

技术 · 03-22 · 434 人浏览

背景

最近在研究红外收发,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 为修正值,根据实际情况修改。

验证

以延迟 30us 为例:
pFhP939.png

注意事项

仅 Linux 有效,Windows 下延迟最低 1000us,无法正常使用。

Python 技术
Theme Jasmine by Kent Liao