【发布时间】:2020-10-01 06:10:08
【问题描述】:
activity = input("Enter the message:")
如果没有来自用户的输入,它应该被自动停止,给一个消息没有来自用户的活动。我是python的新手。任何帮助表示赞赏。
【问题讨论】:
标签: python python-3.x windows timeout user-input
activity = input("Enter the message:")
如果没有来自用户的输入,它应该被自动停止,给一个消息没有来自用户的活动。我是python的新手。任何帮助表示赞赏。
【问题讨论】:
标签: python python-3.x windows timeout user-input
用线程这样做:
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])
请注意,达到超时后线程继续运行,因此后续从标准输入读取将不起作用。
或者,如果您想让后续读取工作,那么您可以尝试在循环中调用select.select(超时)和os.read(0, ...),但这在Windows上不起作用(因为select.select在Windows上要求文件句柄是一个套接字,它不适用于控制台输入)。
【讨论】:
input(...) 调用也是从标准输入读取的。