Python 等待输入超时终止:30 秒内获取用户输入
可以使用 threading 模块和 time 模块来实现等待输入超过 30 秒就终止的功能。具体的实现步骤如下:
- 导入
threading和time模块:
import threading
import time
- 定义一个函数
input_with_timeout(),该函数用于等待输入并设置超时时间:
def input_with_timeout(prompt, timeout):
print(prompt)
input_thread = threading.Thread(target=input)
input_thread.daemon = True
input_thread.start()
input_thread.join(timeout)
if input_thread.is_alive():
print('Time is up!')
return None
else:
return input_thread.result
该函数接受两个参数:prompt 表示输入提示信息,timeout 表示超时时间(单位为秒)。函数内部首先打印提示信息,然后创建一个新线程来等待输入,设置该线程为守护线程,启动该线程并等待超时时间,如果线程仍然存活,说明超时了,打印提示信息并返回 None,否则返回输入的内容。
- 调用
input_with_timeout()函数,并传入相应的参数:
input_str = input_with_timeout('Please input something:', 30)
if input_str is not None:
print('You have input:', input_str)
以上代码首先调用 input_with_timeout() 函数,提示用户输入内容,并设置超时时间为 30 秒。如果在 30 秒内输入了内容,将打印输入的内容,否则将打印提示信息“Time is up!”。
完整代码如下:
import threading
import time
def input_with_timeout(prompt, timeout):
print(prompt)
input_thread = threading.Thread(target=input)
input_thread.daemon = True
input_thread.start()
input_thread.join(timeout)
if input_thread.is_alive():
print('Time is up!')
return None
else:
return input_thread.result
input_str = input_with_timeout('Please input something:', 30)
if input_str is not None:
print('You have input:', input_str)
原文地址: https://www.cveoy.top/t/topic/jEXE 著作权归作者所有。请勿转载和采集!