【问题标题】:How to populate module internal progress status to another module?如何将模块内部进度状态填充到另一个模块?
【发布时间】:2020-03-28 11:38:23
【问题描述】:

假设我有一个 python 3.7+ 模块/脚本 A 可以进行大量计算。此外,模块 A 正在另一个模块 B 中使用,其中模块 A 被完全封装,模块 B 不知道模块 A 的很多内部实现,只是以某种方式输出其计算的进度。

将我视为模块 A 的负责人(A 人),其他不认识我的人(B 人)正在编写模块 B。所以 A 人基本上是在编写一个开放库。

模块 A 输出其进度的最佳方式是什么?我想这是一个设计决定。

  1. 模块 A 中的 getter 是否有意义,因此模块 B 必须始终调用此 getter(可能在循环中)才能检索 A 的进度?
  2. 是否有可能以某种方式使用在模块 A 中实现的回调函数,使得每次进度更新时都会调用该函数?让这个回调返回A的当前进度。
  3. 是否有任何其他可以使用的方法?

将我指向现有的解决方案将非常有帮助!

【问题讨论】:

标签: python python-3.x design-patterns progress


【解决方案1】:

本质上,模块 B 想要观察模块 A,因为它经过大量的计算步骤。由模块 A 决定如何计算进度并与模块 B 共享。模块 B 无法计算进度,因为它不知道计算的细节。所以它很好地利用了观察者模式。模块 A 不断通知 B 其进度。进度更新的形式也很重要。它可以以百分比、“10 步中的第 5 步”或时间表示。它实际上将定义通知有效负载结构,模块 A 将使用该结构通知模块 B。

【讨论】:

    猜你喜欢
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 2022-10-09
    • 1970-01-01
    • 2018-05-02
    • 2016-08-28
    相关资源
    最近更新 更多