Сброс индикатора выполнения просветления

#python

#python

Вопрос:

Я использую индикаторы выполнения enlighten для отслеживания некоторых запущенных мной потоков. Каждый поток состоит из повторяющегося цикла for, но мне нужен индикатор выполнения для сброса между каждым циклом for. Пока единственный способ, который я нашел для этого, — выполнить обновление с отрицательным значением incr, однако это мешает измерениям времени. Есть ли какой-либо способ сброса или замены индикатора выполнения?

Ответ №1:

Я немного покопался в исходном коде и обнаружил, что вы можете сбросить все, установив .count = 0 и .start = time.time()

Ответ №2:

Кроме того, вы можете просто создать use leave=False при создании индикатора выполнения и закрыть его, когда он будет завершен. Затем создайте новый, чтобы занять его место.

 import time
import enlighten


def run_loops(manager):

    ticks = manager.counter(total=100, desc='Ticks', unit='ticks', leave=False)
    tocks = manager.counter(total=20, desc='Tocks', unit='tocks', leave=False)

    for num in range(100):
        time.sleep(0.1)  # Simulate work
        print(num)
        ticks.update()
        if not num % 5:
            tocks.update()
    ticks.close()
    tocks.close()


with enlighten.get_manager() as manager:
    for num in range(10):
        run_loops(manager)
  

Если у вас несколько баров и вам нужно сохранить позиции, просто используйте position ключевое слово для Counter .