1
我想知道是否有人可以告訴我,如果有一種方法在Python 2.7中讓程序打印每分鐘沒有輸入raw_input
的東西。 例如:如何每分鐘打印一次未輸入raw_input的內容?
if raw_input == "stop loop":
break
不過,雖然沒有在raw_input
進入它重新打印"enter something"
是通過每一分鐘。
我想知道是否有人可以告訴我,如果有一種方法在Python 2.7中讓程序打印每分鐘沒有輸入raw_input
的東西。 例如:如何每分鐘打印一次未輸入raw_input的內容?
if raw_input == "stop loop":
break
不過,雖然沒有在raw_input
進入它重新打印"enter something"
是通過每一分鐘。
試試下面的例子(創建一個包含follwing代碼的文件,並與python
命令來運行它):
from functools import wraps
import errno
import os
import signal
class TimeoutError(Exception):
pass
def timeout(seconds=10, error_message=os.strerror(errno.ETIME)):
def decorator(func):
def _handle_timeout(signum, frame):
raise TimeoutError(error_message)
def wrapper(*args, **kwargs):
signal.signal(signal.SIGALRM, _handle_timeout)
signal.alarm(seconds)
try:
result = func(*args, **kwargs)
finally:
signal.alarm(0)
return result
return wraps(func)(wrapper)
return decorator
@timeout(60)
def print_something():
return raw_input('Enter something: \n')
if __name__ == "__main__":
data = ""
while data != "stop loop":
try:
data = print_something()
except TimeoutError:
continue
我的答案是基於這一公認的答案SO質疑Timeout function if it takes too long to finish
我運行這個,它做的工作,但不重複,如果沒有進入它只有重複一次輸入「數據」我做錯了什麼? – Ryan
它應該工作,你等了60秒,什麼都沒發生? – ettanany
@Ryan請看看我編輯的答案 – ettanany