我有一个装饰器@newthread
它将函数包装在单独的线程中运行(使用 wraps
中的 functools
和 Thread
中的 threading
)。但是,对于某些功能,我只希望这种情况在某些时候发生。
目前,我有 @newthread
检查要包装的函数的关键字参数,以及是否找到 bool new_thread
等于 True
然后它在单独的线程中运行该函数,否则正常运行该函数。例如,
@newthread
def foo(new_thread=False)
# Do stuff...
foo() # Runs normally
foo(new_thread=True) # Runs in new thread
这是执行此操作的规范方法,还是我遗漏了什么?
最佳答案
那么就不要使用newthread
作为装饰器。装饰器只是一个接受一个函数并返回一个函数的函数。
如果你想让它在当前线程中运行,调用
foo(some, params)
如果你想在新线程中运行foo
,请调用
newthread(foo)(some, params)
关于python - 如何在 Python3 中切换装饰器的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33678114/