2008-12-15 3 views

Répondre

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 

de:

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

+0

Je voudrais modifier cela pour être utilisable comme décorateur. – Dustin