Как заполнить статус внутреннего прогресса модуля в другом модуле? - PullRequest
0 голосов
/ 28 марта 2020

допустим, у меня есть python 3.7+ модуль / скрипт A, который выполняет обширные вычисления. Кроме того, модуль A используется внутри другого модуля B, где модуль A полностью инкапсулирован, а модуль B не знает много внутренней реализации модуля A, просто он каким-то образом выводит ход своих вычислений.

Считайте меня ответственным лицом (лицо A) за модуль A, и любой другой человек (лицо B), который меня не знает, пишет модуль B. Таким образом, человек A пишет в основном открытую библиотеку.

Что будет лучшим способом для модуля A для вывода его прогресса? Я предполагаю, что это дизайнерское решение.

  1. Будет ли получатель в модуле A иметь смысл, чтобы модуль B всегда вызывал этот получатель (возможно, в al oop), чтобы получить информацию о ходе выполнения A ?
  2. Можно ли каким-то образом использовать функцию обратного вызова, которая реализована в модуле A таким образом, что эта функция вызывается каждый раз, когда происходит обновление прогресса? Так что этот обратный вызов возвращает текущий прогресс A.
  3. Может быть, есть какой-нибудь другой подход к этому, который можно было бы использовать?

Указание на уже существующие решения было бы очень полезно!

1 Ответ

0 голосов
/ 29 марта 2020

По сути, модуль B хочет наблюдать за модулем A, как он идет, несмотря на обширные этапы вычислений. И модуль А должен решить, как вычислить прогресс и поделиться им с модулем B. Модуль B не может вычислить прогресс, так как он не знает деталей вычисления. Так что это хорошо использовать шаблон наблюдателя. Модуль A постоянно уведомляет B о своем прогрессе. Форма обновления прогресса также важна. Это может выражаться в процентах, или «шаг 5 из 10» или времени. Он фактически определит структуру полезных данных уведомлений, с помощью которой модуль A будет уведомлять модуль B.

...