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