Skip to main content

Extends the base tqdm progress bar with a subscribe method that can expose updates to external (potentially non-Python) processes.

Project description

tqdm-publisher

PyPI version codecov License

tqdm_publisher is a small Python package that allows you to subscribe to updates from tqdm progress bars with arbitrary callback functions.

This is useful if you want to use tqdm to track the progress of a long-running task, but you also want to do something else with the progress information (e.g., forward it to a user interface, log it to a file, etc.).

Installation

pip install tqdm_publisher

Getting Started

Basic Usage

To monitor the progress of an existing tqdm progress bar, simply swap the tqdmand TQDMPublisher constructors. Then, declare a callback function to handle progress updates, and subscribe it to the TQDMPublisher updates using the subscribe method before iteration begins.

Original Code

import random
import time

from tqdm import tqdm

N_TASKS = 100

# Create a list of tasks
durations = [ random.uniform(0, 1.0) for _ in range(N_TASKS) ]

# Create a progress bar
progress_bar = tqdm(durations)

# Iterate over the progress bar
for duration in progress_bar:
    time.sleep(duration) # Execute the task

Modified Code

import random
import time

from tqdm_publisher import TQDMPublisher

N_TASKS = 100
durations = [ random.uniform(0, 1.0) for _ in range(N_TASKS) ]
progress_bar = TQDMPublisher(durations)

# Declare a callback function to handle progress updates
on_update = lambda info: print('Progress Update', info)

# Subscribe the callback to the TQDMPublisher
progress_bar.subscribe(on_update)

for duration in progress_bar:
    time.sleep(duration)

Demo

A complete demo of tqdm_publisher can be found in the demo directory, which shows how to forward progress updates from the same TQDMPublisher instance to multiple clients.

To run the demo, first install the dependencies:

pip install tqdm_publisher[demo]

Then, run the base CLI command to start the demo server and client:

tqdm_publisher demo

Note: Alternatively, you can run each part of the demo separately by running tqdm_publisher demo --server and tqdm_publisher demo --client in separate terminals.

Finally, you can click the Create Progress Bar button to create a new TQDMPublisher instance, which will begin updating based on the TQDMPublisher instance in the Python script.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tqdm_publisher-0.1.1.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

tqdm_publisher-0.1.1-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

Details for the file tqdm_publisher-0.1.1.tar.gz.

File metadata

  • Download URL: tqdm_publisher-0.1.1.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.9.19

File hashes

Hashes for tqdm_publisher-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9a966153e222b26d5a312ad1c0b7cd2a61f585e7e7d7cc6e68104ef46f2558e3
MD5 bca1377cd6f6732fbd36ff7ebac5e6f1
BLAKE2b-256 1ca5dedf07e40a1db3372db087bc166521e7f8408bd8a42f36e01a42fb14cffb

See more details on using hashes here.

File details

Details for the file tqdm_publisher-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for tqdm_publisher-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 85a9b7a4d04e704f1564f4256feec33677f0e96f364f75f77377eba98c3ac283
MD5 afc8e494a4142d4ec76069690ed90fd0
BLAKE2b-256 54efb5ffc080f21ac4c352043f0c4cb02722631aab1fabd2179fb8d29d64902f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page