python - 如何在 Python3 中切换装饰器的操作

标签 python multithreading python-3.x decorator

我有一个装饰器@newthread它将函数包装在单独的线程中运行(使用 wraps 中的 functoolsThread 中的 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/

相关文章:

python - 使用 pandas.DataFrame.mean 时返回一个 pandas DataFrame

java - 带队列的信号量

Python 调度程序未运行导入中调度的函数

python - 使用自定义编码器将带有 Decimal 键的 python 字典转换为 JSON

python - Mysql连接,一个还是多个?

jquery - python : redirect output to text file and display it in real time

python - Geodjango : [WinError 127] : The specified procedure could not be found 中的操作系统错误

java - Android - 同步线程与onSensorChanged发送udp数据包

javascript - 多个 Rhino (java) 线程操作同一个文件

python - 如何处理字符串列表,其中每个字符串也可能是逗号分隔的字符串列表?