You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中设置精度达小数秒级的警报信号?

Python 3 实现高精度定时警报(支持非整数秒)

要实现精度高于整数秒的定时警报(比如0.4秒、3.2秒),可以使用标准库的signal.setitimer()方法,它替代了过时的ualarm(),支持微秒级精度的实时定时。

核心方案:signal.setitimer()

signal.setitimer()可以设置实时定时器(ITIMER_REAL),参数支持浮点数(代表秒数),到期时会发送SIGALRM信号,和signal.alarm()的信号类型一致,但精度更高。

代码示例

import signal
import time

# 定义警报触发后的处理函数
def high_precision_alarm_handler(signum, frame):
    print("警报触发!当前时间戳:", time.time())

# 注册SIGALRM信号的处理函数
signal.signal(signal.SIGALRM, high_precision_alarm_handler)

# 设置单次0.4秒的警报(第二个参数为0表示仅触发一次)
signal.setitimer(signal.ITIMER_REAL, 0.4, 0)

# 阻塞等待警报触发(实际场景可替换为业务逻辑)
print("等待0.4秒警报...")
time.sleep(1)

# 若需取消未触发的定时器,可调用:
# signal.setitimer(signal.ITIMER_REAL, 0)

关键说明

  • ITIMER_REAL:基于系统实时时间,到期发送SIGALRM,精度可达微秒级(取决于系统调度)
  • 参数格式:setitimer(定时器类型, 首次触发时间(秒), 重复触发间隔(秒)),若仅需单次触发(类似signal.alarm()),将重复间隔设为0即可
  • 浮点数支持:直接传入0.4、3.2这类非整数秒数,底层会自动转换为微秒计算

重复定时场景(可选)

如果需要重复触发警报(比如每3.2秒执行一次),只需调整第三个参数:

# 首次3.2秒后触发,之后每3.2秒重复触发
signal.setitimer(signal.ITIMER_REAL, 3.2, 3.2)

内容的提问来源于stack exchange,提问作者Terry Ligocki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:43:09