@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()


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

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

Похожие вопросы