tqdm  by tqdm

Progress bar for Python and CLI tools

created 10 years ago
30,200 stars

Top 1.2% on sourcepulse

GitHubView on GitHub
Project Summary

tqdm provides a fast, extensible, and highly customizable progress bar for Python loops and command-line operations. It aims to offer a negligible overhead, making it suitable for even the tightest loops, and supports various environments from standard terminals to Jupyter notebooks.

How It Works

tqdm wraps any Python iterable, automatically displaying a smart progress meter with ETA and iteration speed. It employs algorithms to predict remaining time and skip unnecessary displays, minimizing overhead. The library is dependency-free, relying only on Python's standard capabilities for terminal control.

Quick Start & Requirements

  • Install via pip: pip install tqdm
  • Install via conda: conda install -c conda-forge tqdm
  • No specific Python version or external dependencies are required beyond standard Python.

Highlighted Details

  • Minimal overhead: ~60ns per iteration, significantly lower than alternatives.
  • Cross-platform compatibility: Works on Linux, Windows, macOS, and more.
  • Versatile usage: Supports iterable wrapping, manual control, module execution via pipes, and integration with libraries like Pandas, Keras, and Dask.
  • Multiple output formats: Supports Unicode, ASCII, and custom bar formats.
  • GUI integration: Includes submodules for Jupyter notebooks (tqdm.notebook), Matplotlib (tqdm.gui), and Tkinter (tqdm.tk).

Maintenance & Community

The project is actively maintained by a core team, with Casper da Costa-Luis as the primary maintainer. Contributions are welcome, and community support is available via GitHub issues.

Licensing & Compatibility

Open Source (OSI approved). Compatible with commercial and closed-source applications.

Limitations & Caveats

Some older or non-standard terminal environments (e.g., certain cloud consoles, IDEs like PyCharm) might have issues with nested progress bars or Unicode rendering, potentially requiring configuration like TQDM_POSITION=-1 or ascii=True. Asynchronous iterator break statements may not trigger proper cleanup without manual close() calls or context manager usage.

Health Check
Last commit

2 months ago

Responsiveness

Inactive

Pull Requests (30d)
1
Issues (30d)
2
Star History
533 stars in the last 90 days

Explore Similar Projects

Starred by Chip Huyen Chip Huyen(Author of AI Engineering, Designing Machine Learning Systems), Georgios Konstantopoulos Georgios Konstantopoulos(CTO, General Partner at Paradigm), and
2 more.

maestro by roboflow

0.1%
3k
CLI/SDK for fine-tuning multimodal models
created 1 year ago
updated 5 days ago
Starred by John Yang John Yang(Author of SWE-bench, SWE-agent), Lysandre Debut Lysandre Debut(Chief Open-Source Officer at Hugging Face), and
3 more.

cleanrl by vwxyzjn

0.5%
8k
RL algorithms implementation with research-friendly features
created 6 years ago
updated 3 weeks ago
Starred by Chip Huyen Chip Huyen(Author of AI Engineering, Designing Machine Learning Systems), Nathan Lambert Nathan Lambert(AI Researcher at AI2), and
1 more.

tianshou by thu-ml

0.1%
9k
PyTorch RL library for algorithm development and application
created 7 years ago
updated 1 day ago
Feedback? Help us improve.