当函数作为进程中的对象传递时,Decorator不起作用

时间:2015-08-07 06:29:31

标签: python multithreading python-decorators

我有以下代码:

@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时装饰器工作。但是当我将它用作进程中的目标函数时,该进程似乎根本不尊重装饰器。我在这里错过了一些非常简单的东西吗?

1 个答案:

答案 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装饰器的结果。