2016-11-15 45 views
1

我想知道是否有人可以告訴我,如果有一種方法在Python 2.7中讓程序打印每分鐘沒有輸入raw_input的東西。 例如:如何每分鐘打印一次未輸入raw_input的內容?

if raw_input == "stop loop": 
    break 

不過,雖然沒有在raw_input進入它重新打印"enter something"是通過每一分鐘。

回答

0

試試下面的例子(創建一個包含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

+0

我運行這個,它做的工作,但不重複,如果沒有進入它只有重複一次輸入「數據」我做錯了什麼? – Ryan

+0

它應該工作,你等了60秒,什麼都沒發生? – ettanany

+0

@Ryan請看看我編輯的答案 – ettanany