如何在30秒后中断输入并退出程序?-自动注销-Python
我想在30秒后自动注销。 程序等待用户输入一些东西,30秒后我希望程序自动关闭。 我有这样的想法:如何在30秒后中断输入并退出程序?-自动注销-Python,python,python-3.x,input,Python,Python 3.x,Input,我想在30秒后自动注销。 程序等待用户输入一些东西,30秒后我希望程序自动关闭。 我有这样的想法: import sys, time, os def start_controller(user): start = time.time() PERIOD_OF_TIME = 30 os.system('clear') print_menu() #printing menu choice = get_choice(
import sys, time, os
def start_controller(user):
start = time.time()
PERIOD_OF_TIME = 30
os.system('clear')
print_menu() #printing menu
choice = get_choice() #get input from view model
while choice != "0":
os.system('clear')
if choice == "1":
start += PERIOD_OF_TIME
print_student_list(Student.student_list,AllAttendance.all_attendance_list)
if time.time() > start + PERIOD_OF_TIME:
os.system("clear")
print('logout')
Database.save_all_data_to_csv()
sys.exit()
下面是一个使用线程获取和处理用户输入并超时的简单示例 我们创建一个计时器线程来执行超时功能,并在守护进程线程中等待用户输入。如果用户在指定的延迟时间内提供输入字符串,则计时器将被取消,否则计时器将设置
完成
事件以中断while
循环。如果需要进行任何最终清理,可以在while
循环之后进行
from threading import Thread, Timer, Event
def process_input(timer):
s = input('> ')
timer.cancel()
print(s.upper())
delay = 30
finished = Event()
while not finished.isSet():
timer = Timer(delay, finished.set)
worker = Thread(target=process_input, args=(timer,))
worker.setDaemon(True)
worker.start()
timer.start()
timer.join()
下面是一个使用线程获取和处理用户输入并超时的简单示例 我们创建一个计时器线程来执行超时功能,并在守护进程线程中等待用户输入。如果用户在指定的延迟时间内提供输入字符串,则计时器将被取消,否则计时器将设置
完成
事件以中断while
循环。如果需要进行任何最终清理,可以在while
循环之后进行
from threading import Thread, Timer, Event
def process_input(timer):
s = input('> ')
timer.cancel()
print(s.upper())
delay = 30
finished = Event()
while not finished.isSet():
timer = Timer(delay, finished.set)
worker = Thread(target=process_input, args=(timer,))
worker.setDaemon(True)
worker.start()
timer.start()
timer.join()
将
if time.time()>start+PERIOD\u OF\u time:
移动到while blockget\u选项功能块吗?也就是说,就是等待用户输入的那个吗?如果它们输入不同的值又会怎样?是否在超时后仍应退出?是的,get_choice()正在返回input()。我想在启动启动控制器()时启动计时器,如果我什么都不做,30秒后它应该退出。我可以看到您正在检查值“1”。但是,如果与“1”不同,则不会显示任何错误,并且不会再次向用户请求不同的选择。那么,这部分应该如何工作呢?PS:在回复特定用户的评论时使用@username
,这样他们就可以收到通知。将if time.time()>开始+时段时间:
移动到while block获取选项
功能块吗?也就是说,就是等待用户输入的那个吗?如果它们输入不同的值又会怎样?是否在超时后仍应退出?是的,get_choice()正在返回input()。我想在启动启动控制器()时启动计时器,如果我什么都不做,30秒后它应该退出。我可以看到您正在检查值“1”。但是,如果与“1”不同,则不会显示任何错误,并且不会再次向用户请求不同的选择。那么,这部分应该如何工作呢?备注:回复特定用户的评论时,请使用@username
,以便他们收到通知。