@Muskat12
fullstack web dev.

Как продвинуть прогресс бар из другой функции?

Использую либу progress, внутри with запускаю 6 потоков которые делают определенные действия с файлами, мне нужно что бы я мог из под функции потока двигать прогресс бар, как я пробовал:
with Bar('Processing ', max=count, suffix='%(percent).1f%% - %(eta)d Seconds') as bar:
    splits = np.array_split(wordlist, 6)
    for arr in splits:
        th = Thread(target=functions.ThreadHasher, args=(splits, bar, ))

def ThreadHasher(arr, bar):
    for line in arr:
        bar.next()


В таком состоянии прогресс бар стоит на месте. Помогите плиз.
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Во-первых, потоки ещё запустить надо. Во-вторых, главный поток выйдет из блока with ещё до того, как какой-нибудь из дочерних потоков выполнится. Так что нужно либо создавать экземпляр Bar не контекстным менеджером, либо добавить ожидание завершения потоков. В-третьих, если Bar не потокобезопасен, то нужна ещё синхронизация перед вызовом next. Наконец, PEP8 стоит соблюдать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы