2011-03-05 125 views
1

为什么这段代码不起作用?python装饰器,调用延迟功能

from threading import Timer 

def delayed(seconds): 
    def decorator(f): 
     def wrapper(*args, **kargs): 
      Timer(seconds, f, args, kargs) 
     return wrapper 
    return decorator 

@delayed(1) 
def foo(): 
    '''this function does not return''' 
    print('foo') 

foo() 
print('dudee') 

我只是这样的结果: dudee 富

我只有 dudee

回答

5

因为你没有启动计时器尝试这样的:

from threading import Timer 

def delayed(seconds): 
    def decorator(f): 
     def wrapper(*args, **kargs): 
      t = Timer(seconds, f, args, kargs) 
      t.start() 
     return wrapper 
    return decorator 

@delayed(1) 
def foo(): 

    print('foo') 

foo() 
print('dudee') 
+0

OHU神!我在没有实例化的情况下检查dir(Timer)!谢谢! – nkint 2011-03-06 12:12:06