【发布时间】:2015-11-13 02:19:56
【问题描述】:
我有一个装饰器@newthread,它包装函数以在单独的线程中运行(使用来自functools 的wraps 和来自threading 的Thread)。但是,有些功能我只希望在某些时候发生这种情况。
目前,我让@newthread 检查要包装的函数的关键字参数,如果它发现布尔值new_thread 等于True,那么它将在单独的线程中运行该函数,否则运行正常运作。例如,
@newthread
def foo(new_thread=False)
# Do stuff...
foo() # Runs normally
foo(new_thread=True) # Runs in new thread
这是执行此操作的规范方式,还是我遗漏了什么?
【问题讨论】:
-
@Kevin 有什么代码需要审查?
@newthread实现没有显示,foo的东西都是假设的。 -
或者你可以做
thread_foo = newthread(foo)并根据你的需要使用foo或thread_foo,但我认为你的方式更好。 -
@200_success:是的,如果 OP 确实提供了一些代码供审查,这可能会有所帮助。
-
@ArtOfWarfare 1. 作为 Code Review 的版主,我向您保证,由于上述原因,该问题将在 Code Review 时立即结束。 2. “因为它属于 Code Review”并不是将这个问题归类为 Stack Overflow 题外话的正当理由。请参阅help center 以获取有效的离题原因列表。另请阅读A guide to Code Review for Stack Overflow users。
标签: python multithreading python-3.x decorator