Python:等待用户输入,如果10分钟后没有输入,继续执行程序

时间:2013-10-22 03:14:40

标签: python python-3.x

我试过了:

from time import sleep
while sleep(3): 
    input("Press enter to continue.") 

但它似乎不起作用。我希望程序等待用户输入,但如果10分钟后没有用户输入,则继续执行程序。

这是python 3。

3 个答案:

答案 0 :(得分:7)

为什么代码不起作用?

time.sleep什么都不返回; time.sleep(..)的值变为None; <{1}}循环体未执行。

如何解决

如果您使用的是Unix,则可以使用select.select

while

否则,你应该使用线程。

使用msvcrt

Windows特定解决方案

import select
import sys

print('Press enter to continue.', end='', flush=True)
r, w, x = select.select([sys.stdin], [], [], 600)

答案 1 :(得分:4)

这是一种使用闹钟的简单方法。当时间到期时,调用lambda函数,这会引发ZeroDivisionError

from signal import signal, alarm, SIGALRM
signal(SIGALRM, lambda x:1/0)
try:
    alarm(600)
    input("Press enter to continue.")
except ZeroDivisionError:
    print("timed out")

答案 2 :(得分:0)

另一种方法是:

from time import sleep
print("I'm executing")
try:
    print("Wake up Ctrl-C!")
    sleep(600)
except KeyboardInterrupt:
    print("I woke up!")
else:
    print("I'm executing again.")

不是最好的答案,它肯定感觉像滥用例外,但它确实有效。