带延迟调用函数的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 foo
但我只得到了 dudee
1 个回答
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')