2008-12-15 2 views
2

Кто-нибудь знает хорошее решение для реализации функции, аналогичной тайм-ауту Ruby в Python? Я искал его и не видел ничего хорошего. Спасибо за помощь.Тайм-аут Ruby для Python?

Вот ссылка на документацию рубинового http://www.ruby-doc.org/stdlib/libdoc/timeout/rdoc/index.html

+0

См http://stackoverflow.com/questions/366682/how-to-limit-execution -time-of-a-function-call-in-python – tzot 2008-12-15 09:26:28

ответ

2
def timeout(func, args=(), kwargs={}, timeout_duration=1, default=None): 
    import threading 
    class InterruptableThread(threading.Thread): 
     def __init__(self): 
      threading.Thread.__init__(self) 
      self.result = None 

     def run(self): 
      try: 
       self.result = func(*args, **kwargs) 
      except: 
       self.result = default 

    it = InterruptableThread() 
    it.start() 
    it.join(timeout_duration) 
    if it.isAlive(): 
     return default 
    else: 
     return it.result 

от:

http://code.activestate.com/recipes/473878/

+0

Я бы хотел изменить это, чтобы использовать его в качестве декоратора. – Dustin 2008-12-15 06:16:00

Смежные вопросы