Python ProgressBar не показывает прогресс правильно - PullRequest
0 голосов
/ 17 мая 2018

У меня есть индикатор выполнения в Python:

import os
def file_len(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1

import progressbar
from time import sleep
bar = progressbar.ProgressBar(maxval=file_len(os.path.basename(__file__)), \
    widgets=[progressbar.Bar('=', '[', ']'), ' ', progressbar.Percentage()])
bar.start()
for i in range(file_len(os.path.basename(__file__))):
    bar.update(i+1)
    sleep(0.1)
bar.finish()

Индикатор выполнения визуально работает, как и ожидалось: он отображает прогресс в баре и процент за ним. Однако расчет индикатора выполнения неверен.

Сначала отображается полоса с возрастающим процентом, но когда полоса равна 100%, программа начинает работать. Я поместил несколько определений «print» в мой код, чтобы увидеть, где код находится в данный момент, но теперь я сначала вижу процентную полосу, увеличивающуюся до 100%, за которой следует первая «print» в коде. После этой распечатки код начинает свои вычисления.

Кто-то знает, что я здесь не так сделал?

С уважением, Ганеш

EDIT: Это выглядит так this

Итак, тренировочная часть начинается, когда планка равна 100%.

1 Ответ

0 голосов
/ 17 мая 2018

Etene, у меня есть код, который я здесь.Я удалил все индикаторы выполнения, которые я попробовал, так что, возможно, вы можете попробовать что-то.

import os
import numpy as np
from sklearn import cross_validation
import matplotlib.pyplot as plt
import seaborn as sb
import pylab as pl
from termcolor import colored
from sklearn import datasets

""" ===================================== Create New Folders ===================================== """
def create_folder(path):
    if not os.path.exists(path):
        os.makedirs(path) 
    return path

current_dir = os.getcwd()

path_graph = create_folder(current_dir + "\\Graphs")

""" ==================================== Function Information ==================================== """

def graph_heatmap(Plot, Filename, Annot, Mask_half):

    print (colored('---- Creating Heatmap: ' + Filename, 'blue'))

    plt.gcf().clear()

    plt.subplots(figsize=(40,40))
    mask = np.zeros_like(Plot)
    mask[np.triu_indices_from(mask)] = Mask_half
    sb.heatmap(Plot, annot=Annot, mask=mask, cmap="Blues", linewidths=0.5, linecolor='black', vmin=0, vmax=1)

    pl.savefig(path_graph + '\\' + Filename + '.png', bbox_inches='tight', dpi=600)
    plt.close()

""" ================================= Importing & Filtering Files ================================ """
diabetes = datasets.load_diabetes()


""" ======================================== Data Mining ======================================== """
#Training
print (colored('---- Training', 'blue'))

X = diabetes.data[:, np.newaxis, 2]
y = diabetes.target

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size = 0.3, random_state=25)

Это меньше, чем у меня, но структура такая же.Я хочу, чтобы индикатор выполнения начинался сразу после импорта модуля и заканчивался последней строкой (когда все сделано).

...