Задать вопрос
@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()


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

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽