可以使用 threading 模块和 time 模块来实现等待输入超过 30 秒就终止的功能。具体的实现步骤如下:

  1. 导入 threadingtime 模块:
import threading
import time
  1. 定义一个函数 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,否则返回输入的内容。

  1. 调用 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)
Python 等待输入超时终止:30 秒内获取用户输入

原文地址: https://www.cveoy.top/t/topic/jEXE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录