Щоб корисно використовувати будь-які рамки смуги прогресу, тобто отримати фактичний відсоток прогресу та розрахунковий показник ETA, ви повинні мати можливість оголосити, скільки кроків у нього буде.
Отже, ваша обчислювальна функція в іншому потоці, чи можете ви розділити її на кілька логічних етапів? Чи можете ви змінити його код?
Вам не потрібно рефакторировать його або розділяти фактичними методами, ви можете просто поставити деякі стратегічні yieldмісця десь усередині нього! Якщо у дорогої функції є цикл for , просто покладіть її. Вам слід лише знати наприкінці, скільки врожаїв буде зроблено, щоб отримати найкращі результати.
Таким чином, ваша функція може бути приблизно такою:
def compute():
time.sleep(1) # some processing here
yield # insert these
time.sleep(1)
yield
time.sleep(1)
yield
або це:
def compute():
for i in range(1000):
time.sleep(.1) # some processing here
yield # insert these
За допомогою такої функції ви можете встановити:
pip install alive-progress
І використовувати його так:
from alive_progress import alive_bar
with alive_bar(3) as bar: # or a 1000 in the loop example.
for i in compute():
bar()
Щоб отримати класний прогрес-бар!
|█████████████▎ | ▅▃▁ 1/3 [33%] in 1s (1.0/s, eta: 2s)
Відмова: Я автор "live_progress", але це повинно добре вирішити вашу проблему. Прочитайте документацію на веб- сайті https://github.com/rsalmei/alive-progress , ось приклад того, що вона може зробити:
