我有以下代码:
@retry(stop_max_attempt_number=2)
def a_func:
do_somthing
def a_func_thread:
process = multiprocessing.Process(target=a_func, args=[])
process.start()
我看到的是当我直接调用a_func时装饰器工作。但是当我将它用作进程中的目标函数时,该进程似乎根本不尊重装饰器。我在这里错过了一些非常简单的东西吗?
答案 0 :(得分:1)
装饰器将始终有效,因为装饰器仅在定义函数时被调用,然后装饰器调用的结果被存储为函数名称。
def decorator(fnc):
def test():
print "test"
return test
@decorator
def foo():
print "foo"
foo() # will print test
在target=a_func
点,a_func
是调用@retry装饰器的结果。