程序启动,默认情况下应该等待 100 秒等待用户响应,但会一直等待没有输入。如何让程序只等待 100 秒?
例如下面的程序中,如果用户输入了1,那么程序现在正在执行函数,否则用户没有输入任何内容,将等待 10 个小时再执行函数工作。如何为这样工作的控制台编写程序:
work():
print('это работает сейчас')
import time
print ('выполняем программу через 10 часов или сразу? 1 - сразу, *- через 10 часов(ничего не введено)')
s = input('')
if s ==1:
work()
else:
time.sleep('36000')
work()
我为此创建了一个包装类
threading:但是这段代码并不完美,输入是“一次性的”。我们可以继续程序,但是如果用户没有输入任何内容,控制台仍然会继续等待他的输入。在您的情况下,这不是问题,但解决方案并不普遍。
https://stackoverflow.com/questions/15528939/python-3-timed-input/15533404#15533404
需要注意的是,如果过了 10 小时,该功能将起作用,然后用户输入“1”,则该功能将再次起作用。
Python 有一个用于此目的的库。
timeout_decorator使用它,您的任务就这样解决了
因此,可以使用
wait_for(创建新函数,但有超时)为任何现有函数设置超时或者使用装饰器为您的功能
set_timeout并且还可以设置默认返回值,如果用户没有输入任何内容将返回
@nomnoms12,我添加了代码,结果如下: