python - 如何将模块内部进度状态填充到另一个模块?
问题描述
假设我有一个 python 3.7+ 模块/脚本 A 可以进行大量计算。此外,模块 A 正在另一个模块 B 中使用,其中模块 A 被完全封装,模块 B 不知道很多模块 A 的内部实现,只是它以某种方式输出其计算的进度。
将我视为模块 A 的负责人(人 A),不认识我的其他人(人 B)正在编写模块 B。所以人 A 基本上是在编写一个开放库。
模块 A 输出其进度的最佳方式是什么?我想这是一个设计决定。
- 模块 A 中的 getter 是否有意义,以便模块 B 必须始终调用此 getter(可能在循环中)才能检索 A 的进度?
- 是否有可能以某种方式使用在模块 A 中实现的回调函数,以便在每次进度更新时调用该函数?这样这个回调就返回了A的当前进度。
- 是否有任何其他可以使用的方法?
将我指向现有的解决方案将非常有帮助!
解决方案
本质上,模块 B 想要观察模块 A,因为它经过了广泛的计算步骤。由模块 A 决定如何计算进度并与模块 B 共享。模块 B 无法计算进度,因为它不知道计算的细节。所以它很好地利用了观察者模式。模块 A 不断通知 B 其进度。进度更新的形式也很重要。它可以以百分比、“10 步中的第 5 步”或时间表示。它实际上将定义通知有效负载结构,模块 A 将使用该结构通知模块 B。
推荐阅读
- json - 使用 circe 编码为 JSON 的 StackOverflowError
- c# - Xamarin iOS SIGABRT 启动时崩溃
- javascript - 来自对象数组的 D3.js x 值缩放问题
- jquery - 在 Internet Explorer 中使用 jQuery 来穿透 Shadow DOM
- c - 进程树(fork)Linux
- python - Python - 基于 3 列过滤数据框,其中可能包含追捧的值
- laravel - Socialite 不能在 Laravel 中间件中工作,我该如何解决这个问题?
- node.js - Nodejs节点二进制核心转储(非法指令)
- javascript - 在客户端reactJS下载之前将多个文件放到一个zip文件夹中
- mariadb - 用最新的 mariadb 更新 mysql