https://www.zhihu.com/question/25950466/answer/31731502
import time
def addspam(timeout=-1):
def _addspam(fn):
sp = ['*', '#', '%']
def __addspam(*args):
print fn.__name__
i = 0
st = time.time()
while True:
if time.time() - st >= timeout:
if i >= len(sp):
i = 0
print sp[i] * 5
i += 1
st = time.time()
return fn(*args)
return __addspam
return _addspam
@addspam(timeout=2)
def useful(a, b):
print a**2 + b ** 2
if __name__ == "__main__":
useful(2, 3)
代码可视化: http://pythontutor.com/
利用装饰器的一个git项目: