Skip to content

MultiBar not behaving as expected #306

@nup002

Description

@nup002

Version: 4.5.0
Python version: 3.11
Platform: Windows 11

Problem:
MultiBar does not display separate progress bars.

I run the following snippet from the documentation:

import random
import threading
import time

import progressbar

BARS = 5
N = 50


def do_something(bar):
    for i in bar(range(N)):
        # Sleep up to 0.1 seconds
        time.sleep(random.random() * 0.1)

        # print messages at random intervals to show how extra output works
        if random.random() > 0.9:
            bar.print('random message for bar', bar, i)


with progressbar.MultiBar() as multibar:
    for i in range(BARS):
        # Get a progressbar
        bar = multibar[f'Thread label here {i}']
        # Create a thread and pass the progressbar
        threading.Thread(target=do_something, args=(bar,)).start()

Expected behaviour
I expect five independent progress bars, displayed on separate lines, updating independently of each other.

python multibar_example.py
random message for bar <ProgressBar#0: Thread label here 0> 3
random message for bar <ProgressBar#1: Thread label here 1> 56
random message for bar <ProgressBar#2: Thread label here 2> 4
random message for bar <ProgressBar#3: Thread label here 3> 8
random message for bar <ProgressBar#4: Thread label here 4> 23

Observed behaviour
A single progress bar is displayed. Each update overwrites the previous.

python multibar_example.py
random message for bar <ProgressBar#3: Thread label here 3> 48

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions