用户 [python] 不活动 60 秒后超时输入(提示)

Timeout a input(prompt) after 60 seconds of inactivity from user[python]

activity = input("Enter the message:")

如果没有来自用户的输入,它应该自动停止,给出一条消息 no activity 来自用户。我是 python 的新手。感谢您的帮助。

用线程这样做:

import threading
import queue

result_queue = queue.Queue()
def input_target(queue):
  queue.put(input('Enter the message:'))
threading.Thread(target=input_target, daemon=True, args=(result_queue,)).start()
result = None
try:
  result = result_queue.get(timeout=1)
except queue.Empty:
  result = None
print([result])

请注意,线程会在超时后继续 运行,因此后续从 stdin 读取将不起作用。

或者,如果你想让后续读取工作,那么你可以尝试在循环中调用 select.select(超时)和 os.read(0, ...),但这对 Windows(因为 Windows 上的 select.select 要求文件句柄是一个套接字,它不适用于控制台输入)。