Найти - Пользователи
Полная версия: Вывод информации о прогрессе длительного процесса, реализованного в библиотеке
Начало » Python для экспертов » Вывод информации о прогрессе длительного процесса, реализованного в библиотеке
1
SeregaGomen
Коллеги! Столкнулся со следующей проблемой (актуальной, по-моему, не только для питона). Вызываю из numpy функцию решения системы линейных алгебраических уравнений. Делаю это так:
     
    # Прямое решение СЛАУ
    def _solve_direct(self):
        self._progress.set_process('Solving of equation system...', 1, 1)
        self.__global_matrix_stiffness = self.__global_matrix_stiffness.tocsr()
        try:
            self.__global_load = spsolve(self.__global_matrix_stiffness, self.__global_load)
        except ArpackError:
            return False
        self._progress.set_progress(1)
        return True
Собственно в чем вопрос. Если СЛАУ большая, то данный процесс может занимать значительное время. Как сделать анимацию прогресса вычислений? Ну может быть какой-нибудь параллельный процесс запустить, где слеш бы на экране вертелся или что-то в этом духе… Что посоветуете? Куда копать?
P.S. “Ковыряние” в исходниках библиотеки не предлагать!
JOHN_16
Просто анимация - это бессмысленная вещь. Абсолютно. Программа с таким же успехом может зависнуть или пуститься в бесконечнй цикл, при этом анимация будет только вводить в заблуждение.
Другое дело отображение прогресса исполнения. Это наглядно и информатично, но не всегда возможно. Думаю этот случай как раз из последнего.
SeregaGomen
Так-то оно так. Но в данном случае предполагается, что мы используем библиотечную процедуру, которая не должна зависнуть (в моем случае СЛАУ либо решится, либо нет). Просто хочется, чтобы пользователь видел, что что-то таки происходит в программе.
JOHN_16
Так я об этом и говорю - вы достоверно не знаете об этом и можете вводить в заблуждение.
Конечно если вам очень хочется, то запускайте нагруженный код в отдельном потоке/процессе, а в основном играйтесь с выводом на консоль. Что бы не подключать ncurses и ими подобными есть простой способ - спец символ \r - возврат коретки без переноса строки. МОжно писать поверх предыдущего символа и так симулировать что процесс идет. Правда не помню работает ли это в случае с виндовой консолью
PEHDOM
JOHN_16
Правда не помню работает ли это в случае с виндовой консолью
работает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB