Python中如何实现输入超时3秒后自动执行后续代码
Python 带超时功能的输入实现
需求说明
需要改造普通input逻辑,发起输入询问后如果3秒内没有收到用户输入,直接跳过执行后续代码:
- 正常输入场景:用户输入邮箱后打印确认信息
- 超时场景:3秒无输入,提示用户未检测到输入
原参考代码如下(无超时逻辑):
email = input("Enter your email address: ") print("To confirm, is your email address:", email)
跨平台兼容实现方案(支持Windows、macOS、Linux)
用threading线程模块实现,无需依赖第三方库,适配全平台:
import threading # 定义全局变量存储输入结果 user_input = None def input_thread(prompt): global user_input user_input = input(prompt) # 启动输入线程 thread = threading.Thread(target=input_thread, args=("Enter your email address: ",)) # 设为守护线程,主线程退出时自动销毁 thread.daemon = True thread.start() # 等待3秒 thread.join(timeout=3) if user_input is None: print("\n未检测到输入") else: print("To confirm, is your email address:", user_input)
Unix/Linux/macOS 精简实现方案
如果只需要在类Unix系统运行,可以用signal信号模块更简单实现:
import signal class TimeoutError(Exception): pass def timeout_handler(signum, frame): raise TimeoutError # 注册信号处理器,3秒后触发超时 signal.signal(signal.SIGALRM, timeout_handler) signal.alarm(3) try: email = input("Enter your email address: ") # 输入完成取消闹钟 signal.alarm(0) print("To confirm, is your email address:", email) except TimeoutError: print("\n未检测到输入")
内容的提问来源于stack exchange,提问作者AlanV
相关产品推荐
相关产品推荐

