如何在Python中配置装饰器

2023-12-21

我正在尝试使用 Thespian (https://thespianpy.com/doc/ https://thespianpy.com/doc/),一个用于演员模型的 Python 库,特别是我正在尝试使用“剧团”功能。据我了解,剧团装饰器充当调度程序,运行多个演员直至指定的 max_count,每个演员并行运行。剧团功能作为装饰器应用在我的演员类上:

@troupe(max_count = 4, idle_count = 2)
class Calculation(ActorTypeDispatcher):
    def receiveMsg_CalcMsg(self, msg, sender):
        self.send(sender, long_process(msg.index, msg.value, msg.status_cb))

我想在运行时而不是设计时配置 max_count 。我承认我对装饰器的基础知识很薄弱。

如何在运行时将值传递给 max_count?

我已经经历过这些,但我仍然处于黑暗之中:

python 是否允许我在运行时将动态变量传递给装饰器? https://stackoverflow.com/questions/37789212/does-python-allow-me-to-pass-dynamic-variables-to-a-decorator-at-runtime

http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/ http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/

根据到目前为止的答案,我尝试了这一点,但是装饰器没有被应用(即它的行为就像没有装饰器一样)。我注释掉了类上方的 @troupe 实现,该方法(包括变量)工作正常。这种方法不是:

# @troupe(max_count=cores, idle_count=2)
class Calculation(ActorTypeDispatcher):
    def receiveMsg_CalcMsg(self, msg, sender):
        self.send(sender, long_process(msg.index, msg.value, msg.status_cb))

def calculate(asys, calc_values, status_cb):
    decorated_class = troupe(max_count=5, idle_count=2)(Calculation)
    calc_actor = asys.createActor(decorated_class)

里面还有其他东西calculate功能,但这几乎只是一些簿记。


装饰器语法只是将函数应用于类的快捷方式。 一旦您知道了该函数的值,您就可以自己调用该函数max_count.

class Calculation(ActorTypeDispatcher):
    ...

# Time passes

c = input("Max count: ")
Calculation = troupe(max_count=int(c), idle_count=2)(Calculation)

(或者,只需等到您do have c定义之前Calculation, as 由@brunns显示 https://stackoverflow.com/a/55691015/1126841.)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中配置装饰器 的相关文章

随机推荐

  • 在 PHP 中将字符串解析为数组

    我是 PHP 新手 找不到正确的答案 whatever array Test Blah echo parsed 2 This will be Blah 我想创建一个名为的变量 parsed其中包含 whatever的值 但作为有效的数组而不
  • R 中 Copula 包的 loadNamespace 错误

    我已经在 R 中创建了一个模型 我需要使用copula其中涉及使用 copula 包 我在完全更新的 MacBook Pro 上使用最新版本的 R 我可以安装 copula 包 但是当我尝试打开library copula 我收到以下错误
  • Java 中非阻塞 UDP I/O 与阻塞 UDP I/O

    非阻塞 TCP IPSocketChannels and SelectorNIO 帮助我用少量线程处理许多 TCP IP 连接 但是 UDP 怎么样 DatagramChannels 我必须承认我对UDP不是很熟悉 UDP 发送操作似乎不会
  • __attribute__((weak)) 和静态库

    我想在我的代码中引入一个弱符号 但是 当使用 a 文件时我无法理解它的行为 这是我的最小例子 文件a h void foo attribute weak 文件 a c include a h include
  • 在 jq 中“转置”对象

    我不确定 转置 在这里是否是正确的术语 但我希望使用jq转置一个二维对象 如下所示 name A keys k1 k2 k3 name B keys k2 k3 k4 我想把它改成 k1 A k2 A B k3 A B k4 A 我可以用以
  • UrlRewriteFilter:www 和 https 重定向

    我正在使用 Tuckey UrlRewriteFilter 强制用户转到我的网站的 www 和 https 版本 我的意思是接下来的 3 个 URL 必须重定向到https www myweb com http www myweb com
  • 当我更改路线时,Laravel ajax 搜索不起作用

    我目前面临 ajax 搜索问题 我认为这与路线有关 但我不确定出了什么问题 也许现在编码还为时过早 这有效 这不起作用
  • 将 HTML 表的 元素指定为 Marionette for Backbone.js 中的区域

    Problem Using a Backbone Marrionette Layout https github com derickbailey backbone marionette blob master docs marionett
  • Excel VBA 具有多个搜索条件并循环,直到找到所有不同的结果

    我对 VBA 非常陌生 并且截止日期非常短 因此如果我没有遵循所有论坛指南 我深表歉意 如果您能提供任何帮助 我将不胜感激 Goal 在 Sheet1 中搜索关键字 活动 站点地址 描述 所有者 估价 子类型 和 DATE B 一旦找到关键
  • 如何使用 UITableViewCell 附件复选标记取消选中所有行

    我有一个UITableView每行包含一个复选框 使用UITableViewCellAccessoryCheckmark 我不知道如何使用取消选中所有复选框didSelectRowAtIndexPath method void tableV
  • 如何通过弹出窗口获取输入并通过 javascript/jquery 将文本放入变量中

    我的页面上有一个按钮 单击时 应出现一个弹出框 允许用户输入文本 当按下 确定 提交 时 我的 jscript 将使用输入的数据执行一些功能 非常简单 但我就是不知道该怎么做 Thanks 以最简单的形式 您可以使用提示 问题 默认 摘自w
  • 使用真正的随机盐或用户名盐加胡椒进行密码哈希?

    考虑以下两种方法 hashedPassword hash trulyRandomSalt password 其中 hashedPassword 和 trueRandomSalt 存储在数据库中 hashedPassword hash app
  • 无法连接到应用程序正在侦听的 Docker 容器端口

    我想运行 Jenkins 但为了演示问题 我在 Ubuntu 15 10 中运行 netcat 服务器容器 Docker version 1 6 2 build 7c8fca2 这是我的 Dockerfile FROM ubuntu CMD
  • 使用 pandas dataframe 的内存泄漏

    我在用pandas DataFrame在多线程代码中 实际上是DataFrame called Sound 我注意到我有内存泄漏 因为我的程序的内存使用量逐渐增加超过 1000 万 最终达到计算机内存的 100 并崩溃 I used obj
  • 在 dart 中使用 source_gen 为一系列已解析文件生成一个文件

    我有一个创建迷你反射系统所需的模型列表 我分析了可序列化包并了解如何为每个文件创建一个生成的文件 但是 我找不到如何为大量文件创建一个文件 那么 如何使用 source gen 为一系列文件动态生成一个文件呢 Example Files用户
  • 使会话无效

    我有一个基于 jsp servlet 的应用程序 会话时间超过 30 分钟 我想在有人有意或无意关闭浏览器窗口时立即使会话无效 操作系统关闭 从tast管理器关闭 断电 我可以对此进行检查并使会话无效吗 无法处理这种情况 有一些浏览器提供此
  • 在 JavaScript 中将“'”替换为“”

    我的字符串是这样的 temp SE019 SR132 SC123 我使用如下函数 temp replace 但结果将是 SE019 SR132 SC123 仅删除第一个引号 我需要删除所有引号 使用正则表达式文字g 对于全局 意味着匹配al
  • 无法导入设置;不在系统路径上

    我正在尝试让 Django 使用 virtualenv 工作 我已经上线了 hello world 页面 但是 现在似乎出了问题 因为我的大多数命令都给出了有关 myProject settings 的相同错误 myenv user min
  • 如何使用 Azure 表存储选择 RowKey 范围?

    我想使用主键查询我的天蓝色表存储 另外我想检查我的 RowKey 是否在一个范围内 例如范围 02001 到 02999 有人能告诉我该怎么做吗 我了解如何用简单的方法查询 PK where fooEntiy PartitionKey pa
  • 如何在Python中配置装饰器

    我正在尝试使用 Thespian https thespianpy com doc https thespianpy com doc 一个用于演员模型的 Python 库 特别是我正在尝试使用 剧团 功能 据我了解 剧团装饰器充当调度程序