在用户[python]处于非活动状态60秒后,使输入(提示)超时


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要求文件句柄是一个套接字,而它不用于控制台输入(。

最新更新