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