Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python

Tất cả chúng ta đều đã từng gặp phải trường hợp mã của chúng ta mất một lúc để hoàn thành công việc. Tuy nhiên, khi làm việc với các tập dữ liệu lớn, ngay cả những thao tác đơn giản nhất cũng có thể mất hàng giờ để hoàn thành, khiến chúng ta phải vò đầu bứt tai và cầu nguyện rằng mã của chúng ta không bị vướng vào một vòng lặp vô tận nào đó. Rốt cuộc, một cái nồi được theo dõi không bao giờ sôi, và một vòng lặp được theo dõi không bao giờ được tháo ra. vòng lặp không bao giờ đứtkhông bao giờ phá vỡ

Tại sao nên sử dụng Thanh tiến trình trong Python?

Trong Python, một thanh tiến trình có thể được sử dụng để hiển thị cho người dùng thời gian hoàn thành một thao tác hoặc để cho biết liệu mã có bị mắc kẹt trong một vòng lặp vô hạn hay đang hoàn thành tác vụ của nó hay không. Python có bốn thư viện có thể được sử dụng để tạo thanh tiến trình. Tiến trình, Progressbar2, tiến trình còn sống và tqdm

Nếu bạn chưa đoán ra, tôi là một người rất thiếu kiên nhẫn, vì vậy việc sử dụng ETA hoặc thanh tiến trình trong khi chạy mã thực sự giúp tôi bình tĩnh lại

Trong hướng dẫn này, tôi sẽ giới thiệu bốn thư viện và so sánh chúng dựa trên các tiêu chí khác nhau. May mắn thay, có những thư viện cung cấp chức năng này chỉ bằng một vài dòng

 

Hướng dẫn cấu hình thanh tiến trình Python

Hệ thống Python 3 đã được sử dụng để kiểm tra mã cho hướng dẫn này. 9 cài đặt. Trăn 3. 6. 9 đã cài đặt.

Đây là cách bạn có thể tạo một môi trường ảo với tất cả các thư viện cần thiết để thử nghiệm, mà tôi rất muốn giới thiệu. môi trường ảo với tất cả các thư viện cần thiết để thử nghiệm. Đây là cách bạn có thể làm điều đó.

_10

Bốn thư viện mà chúng tôi sẽ sử dụng bao gồm những điều sau đây

  1. Tiến triển
  2. thanh tiến trình2
  3. tiến độ sống
  4. tqdm
Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python
Các loại thanh ProgressBar khác nhau ( nguồn. Tài liệu Github)

13 Đoạn mã Python bạn cần biết để biết thêm thông tin 13 Đoạn mã Python bạn cần biết

 

Thanh tiến trình sử dụng tiến trình

Progress là một thư viện khá đơn giản và thân thiện với người dùng, cung cấp nhiều kiểu để lựa chọn. Chúng ta hãy xem một số thanh tiến trình có thể được tích hợp vào các vòng lặp của chúng ta bằng cách sử dụng trình quản lý bối cảnh hoặc bằng cách gói một đối tượng có thể lặp lại vào một phương thức. thư viện. Nó cung cấp một loạt các phong cách để lựa chọn. Tất cả các thanh tiến trình có thể được tích hợp vào các vòng lặp của chúng tôi bằng cách sử dụng trình quản lý ngữ cảnh hoặc bằng cách gói một đối tượng có thể lặp lại vào một phương thức. Chúng ta hãy nhìn vào một số trong số họ.

một thanh tiến trình đơn giản với dấu thăng

________Đầu tiên

Trước khi tạo đối tượng của nó, trước tiên chúng ta nhập lớp bar từ tiến trình. mô-đun thanh. Chúng tôi sử dụng phương pháp

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
1 để cập nhật thanh tiến trình ở cuối mỗi lần lặp lại và chúng tôi cung cấp tiền tố
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
0 sẽ được thêm vào phía trước thanh tiến trình của chúng tôi. mô-đun và tạo đối tượng của nó. Chúng tôi cung cấp tiền tố
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
0 sẽ được thêm vào phía trước thanh tiến trình của chúng tôi. Để cập nhật thanh tiến trình, chúng tôi sử dụng phương thức
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
1 ở cuối mỗi lần lặp.

Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python
Nguồn. Tác giả

Chúng tôi có sẵn nhiều đối số khác nhau, chẳng hạn như

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
2. Hãy thử thay đổi điền từ
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
3. Hãy thử thay đổi phần điền từ
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
4 thành
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
5 đồng thời xem qua. nhiều đối số có sẵn cho chúng tôi như
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
2 . Hãy thử sửa đổi phần điền từ
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
3 . Hãy thử sửa đổi phần điền từ
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
4 thành
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
5 và cũng xem xét.

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
2Nguồn. Tác giả
Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python
Nguồn. tác giả

Trong những tình huống mà chúng tôi không biết một thao tác sẽ mất bao lâu, thì có thể sử dụng công cụ quay vòng để trực quan hóa quy trình thay vì thanh tiến trình

______13Nguồn. Tác giả
Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python
Nguồn. tác giả

 

Thanh tiến trình Sử dụng Progressbar2

Một mô-đun cực kỳ phổ biến và dễ sử dụng có tên là Python-Progressbar (còn được gọi là Progressbar2) cung cấp một số tính năng rất mạnh như tự động thay đổi kích thước. Giao diện của thanh tiến trình có thể được tùy chỉnh bằng cách sử dụng các tiện ích như "AbsoluteETA" và "AdaptiveETA". "

Hãy xem xét một trường hợp sử dụng đơn giản

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
0Nguồn. Tác giả
Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python
Nguồn. tác giả

Thư viện sẽ được nhập dưới dạng thanh tiến trình mặc dù ban đầu chúng tôi đã cài đặt nó dưới dạng thanh tiến trình2

 

Kết hợp các thanh tiến trình với bản in

Chúng tôi đã không xem xét vấn đề này với thư viện tiến trình, nhưng điều gì sẽ xảy ra khi vòng lặp for có chức năng in trong đó?

Hãy xem nào

Như bạn có thể thấy, điều này sẽ dẫn đến một thanh tiến trình rất lộn xộn và đáng tiếc là thư viện tiến trình không đưa ra giải pháp. May mắn thay, Progressbar2 cho phép chúng tôi chuyển hướng đầu ra tiêu chuẩn. Tuy nhiên, Progressbar2 cho phép chúng tôi định tuyến lại đầu ra tiêu chuẩn cho điều này.
Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python

Như bạn có thể thấy, điều này sẽ làm cho thanh tiến trình trở nên rất lộn xộn và đáng tiếc là không có cách giải quyết nào trong thư viện tiến trình cho việc này. Tuy nhiên, Progressbar2 cho phép chúng tôi chuyển hướng đầu ra tiêu chuẩn.

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
2Nguồn. Tác giả
Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python
Nguồn. tác giả

 

Sử dụng Alive-Progress để tạo thanh tiến trình hoạt hình

Thư viện này chứa một số thanh tiến trình đẹp nhất hiện có nếu bạn yêu thích hoạt ảnh và muốn làm cho thanh tiến trình của mình trông có tính tương tác. Nhìn này. thanh tiến trình đẹp nhất hiện có. Hãy xem.

Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python

Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python

(Trái. Thanh tiến trình khả dụng, bên phải. AliveSpinners còn sống và đang trong quá trình phát triển (Nguồn. tài liệu)Tài liệu))

Chúng tôi sẽ trình bày một thanh tiến trình mặc định, và sau đó là một thanh tiến trình có một số sửa đổi, vì mã hóa khá giống nhau

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
3Nguồn. Tác giả
Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python
Nguồn. tác giả

Tài liệu Github bao gồm thông tin về một số tính năng thực sự mạnh mẽ mà thư viện này có, như bạn có thể thấy ở trên, nơi chúng tôi nhận thông tin về ETA và số lần lặp lại mỗi giây cùng với thanh tiến trình. Tài liệu Github bao gồm thông tin chi tiết về một số tính năng thực sự mạnh mẽ mà thư viện này có.

 

Thanh tiến trình trongTQDM

Không có gì khác ngoài TQDM để có một thanh tiến trình không nhảm nhí, nhanh chóng nhưng mạnh mẽ

Ngay cả với tất cả các tính năng, TQDM vẫn rất dễ cài đặt và cung cấp một khung nhanh chóng với nhiều tùy chỉnh và thông tin. Hãy xem

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
4Nguồn. Tác giả
Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python
Nguồn. tác giả

TQDM hoạt động trên tất cả các nền tảng chính như Linux, Windows và Mac và theo mặc định, bạn nhận được thông tin như tỷ lệ phần trăm, ETA và thậm chí cả số lần lặp mỗi giây. Tất cả các máy tính xách tay GUI, bảng điều khiển và thậm chí cả IPython/Jupyter đều có thể sử dụng nó mà không gặp sự cố nào. giao diện người dùng đồ họa (GUI) và thậm chí trong IPython/sổ ghi chép Jupyter.

Mô-đun con

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
6 hỗ trợ IPython/Jupyter. Hãy xem một ví dụ với các thanh tiến trình lồng nhau. được hỗ trợ thông qua mô-đun phụ
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
6 . Hãy lấy một ví dụ với các thanh tiến trình lồng nhau.

Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python
Nguồn. tqdm Github

Riêng TQDM có tính năng này với nhiều thanh tiến trình

Cũng có tích hợp với Pandas. Tích hợp gấu trúc.

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
6Nguồn. Tác giả
Hướng dẫn đầy đủ để sử dụng thanh tiến trình Python
Nguồn. tác giả

Ngoài ra, TQDM có một biến thể GUI thử nghiệm được gọi là tqdm-gui. tqdm-gui.

Đối với những người làm việc trong lĩnh vực khoa học dữ liệu, TQDM là một dự án rất quan trọng. là một dự án cực kỳ quan trọng đối với các cá nhân làm việc trong lĩnh vực khoa học dữ liệu.

Thông tin thêm về Python. Không tìm thấy lệnh PIP của Windows Hướng dẫn Không tìm thấy lệnh PIP trên Windows. Hướng dẫn

 

Ưu điểm của thanh tiến trình

Thanh tiến độ cung cấp cho chúng tôi

  1. Một dấu hiệu trực quan rằng quá trình xử lý đang hoạt động
  2. Ước tính thời gian chính xác của việc thực thi mã là rất quan trọng khi đào tạo trên các tập dữ liệu lớn
  3. một thông báo rằng chương trình đang bị trục trặc và cần phải dừng lại

ProgressBar2 nổi tiếng có tổng chi phí là 800 ns/lần lặp, trong khi TQDM có chi phí thấp nhất trong tất cả các thư viện được thảo luận ở trên vào khoảng 60 ns/lần lặp

Phần lớn các thư viện này là độc lập

Các câu lệnh in được hỗ trợ chính thức cùng với thanh tiến trình bởi cả Progressbar2 và live-progress. hỗ trợ in câu lệnh cùng với thanh tiến trình.

Trong hướng dẫn này, chúng ta đã học cách thêm thanh tiến trình vào tập lệnh Python của bạn chỉ bằng một vài dòng mã

Tất cả chúng ta đã ở đó. Mã của chúng tôi đang chạy một công việc và sẽ mất một lúc. Vò đầu bứt tai, chúng tôi cầu nguyện rằng mã của chúng tôi không bị mắc kẹt trong một vòng quay vô tận nào đó. Khi xử lý các tập dữ liệu lớn, ngay cả những thao tác đơn giản nhất cũng có thể mất hàng giờ

Cái nồi đã canh không bao giờ sôi. Một vòng lặp đã xem không bao giờ bị hỏng

Nếu bạn chưa đoán ra, tôi là một người thiếu kiên nhẫn. Có một ETA hoặc Progress Bar có tác dụng kỳ diệu đối với sự lo lắng của tôi

May mắn thay, có những thư viện cung cấp chức năng này chỉ bằng một vài dòng. Trong hướng dẫn này, tôi sẽ giới thiệu bốn thư viện như vậy và so sánh chúng dựa trên nhiều yếu tố

Thành lập

Mã được sử dụng trong hướng dẫn này đã được thử nghiệm trên hệ thống Ubuntu với Python 3. 6. 9 cài đặt

Tôi thực sự khuyên bạn nên thiết lập một môi trường ảo với tất cả các thư viện cần thiết để thử nghiệm. Đây là cách bạn có thể làm điều đó

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
1

Bốn thư viện mà chúng ta sẽ làm việc với. tiến độ, thanh tiến trình 2, tiến độ sống, tqdm

Các loại thanh từ ProgressBar (Nguồn. Tài liệu Github)

# Tiến triển

Progress là một thư viện khá đơn giản và trực quan. Nó cung cấp một loạt các phong cách để lựa chọn. Tất cả các thanh tiến trình có thể được tích hợp vào các vòng lặp của chúng tôi bằng cách sử dụng Trình quản lý ngữ cảnh hoặc bằng cách gói một đối tượng có thể lặp lại vào một phương thức. Chúng ta hãy nhìn vào một số trong số họ

Một thanh tiến trình đơn giản chứa đầy hàm băm

Trước tiên, chúng tôi nhập lớp Bar từ tiến trình. mô-đun thanh và tạo đối tượng của nó. Chúng tôi cung cấp tiền tố

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
2 sẽ được thêm vào phía trước thanh tiến trình của chúng tôi. Để cập nhật thanh tiến trình, chúng tôi sử dụng phương pháp
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
3 ở cuối mỗi lần lặp

Nguồn. Tác giả

Có nhiều đối số có sẵn cho chúng tôi như

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
4 và
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
5. Bạn có thể tìm thấy thông tin chi tiết về họ ở đây. Hãy thử sửa đổi phần điền từ
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
6 thành
from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
7 và cũng xem ETA

Nguồn. Tác giả

Có những lúc chúng tôi không biết ca phẫu thuật sẽ kéo dài bao lâu. Trong những trường hợp như vậy, chúng ta có thể sử dụng Spinners để trực quan hóa quá trình xử lý thay vì thanh tiến trình

Nguồn. Tác giả

Đọc thêm về Progress tại đây. Mã nguồn

# Thanh tiến trình2

Python-Progressbar (còn gọi là Progressbar2) là một mô-đun cực kỳ phổ biến và dễ sử dụng. Nó cung cấp một số tính năng rất mạnh mẽ như tự động thay đổi kích thước khi hệ thống hỗ trợ. Bạn có thể kiểm soát định dạng của thanh tiến trình ở dạng tiện ích con như AbsoluteETA, AdaptiveETA, v.v.

Hãy xem xét một trường hợp sử dụng cơ bản

Nguồn. Tác giả

Ghi chú. Mặc dù lúc đầu chúng tôi đã cài đặt thư viện dưới dạng thanh tiến trình2, nhưng nó sẽ được nhập dưới dạng thanh tiến trình

Kết hợp các thanh tiến trình với đầu ra in

Một điều mà chúng tôi đã không thảo luận trước đó với thư viện tiến độ. Điều gì xảy ra khi vòng lặp for chứa chức năng in?
Hãy xem nào

Nguồn. Tác giả

Như bạn có thể thấy, điều này sẽ làm cho thanh tiến trình trở nên rất lộn xộn và đáng tiếc là không có cách giải quyết nào trong thư viện tiến trình cho vấn đề này. Tuy nhiên, Progressbar2 cho phép chúng tôi chuyển hướng đầu ra tiêu chuẩn

Nguồn. Tác giả

Đừng quên kiểm tra tất cả các tính năng thú vị có sẵn trong ProgressBar2 tại đây

# Alive-Tiến bộ

Nếu bạn yêu thích hoạt ảnh và bạn muốn làm cho thanh tiến trình của mình trông có tính tương tác, thì hãy nhìn xa hơn. Thư viện này chứa một số thanh tiến trình đẹp nhất hiện có. Hãy xem

Bên trái. Alive-Progress Thanh tiến trình có sẵn, bên phải. Các Spinner có sẵn của Alive-Progress (Nguồn. Tài liệu)

Về mã, nó khá giống nhau. Chúng tôi sẽ trình bày một thanh tiến trình mặc định và sau đó là một thanh có một vài sửa đổi

Nguồn. Tác giả

Như bạn có thể thấy ở trên, chúng tôi nhận được thông tin về ETA và số lần lặp lại mỗi giây cùng với thanh tiến trình. Tài liệu Github bao gồm các chi tiết liên quan đến một số tính năng thực sự mạnh mẽ mà thư viện này có

# TQDM

Nếu bạn cần một thanh tiến trình nhanh nhưng mạnh mẽ, không cần tìm đâu xa

TQDM cung cấp một khung nhanh với nhiều tùy chỉnh và thông tin. Ngay cả với tất cả các tính năng, nó vẫn cực kỳ đơn giản để thiết lập. Hãy xem

Nguồn. Tác giả

Theo mặc định, bạn nhận được thông tin như tỷ lệ phần trăm, ETA và thậm chí cả số lần lặp lại mỗi giây. TQDM hoạt động trên tất cả các nền tảng chính như Linux, Windows và Mac. Nó tích hợp liền mạch trong bảng điều khiển, GUI và thậm chí trong sổ ghi chép IPython/Jupyter

IPython/Jupyter được hỗ trợ thông qua mô-đun phụ

from time import sleep
from progress.bar import Bar

with Bar('Processing...') as bar:
    for i in range(100):
        sleep(0.02)
        bar.next()
8. Hãy lấy một ví dụ với các thanh tiến trình lồng nhau

Nguồn. tqdm Github

Ghi chú. Tính năng có nhiều thanh tiến trình này là duy nhất của TQDM

Ngoài ra còn có tích hợp gấu trúc,

Ghi chú. TQDM cũng có Phiên bản GUI thử nghiệm gọi là tqdm-gui

TQDM là một dự án cực kỳ quan trọng đối với các cá nhân làm việc trong Khoa học dữ liệu. Bạn có thể đọc thêm về nó ở đây. Tài liệu

Từ cuối cùng

Thanh tiến độ cung cấp cho chúng tôi

  1. Một gợi ý trực quan rằng quá trình xử lý đang được tiến hành
  2. Ước tính đáng tin cậy về thời gian thực thi mã. (Cực kỳ quan trọng khi đào tạo trên tập dữ liệu lớn)
  3. Chỉ báo nếu chương trình bị kẹt trong một số lỗi và phải dừng lại

TQDM có chi phí thấp nhất trong số tất cả các thư viện được thảo luận ở trên với tốc độ khoảng 60ns mỗi lần lặp. Để so sánh, ProgressBar2 được thiết lập tốt có chi phí hoạt động 800ns/lần lặp

Hầu hết các thư viện này không có bất kỳ phụ thuộc nào

Progressbar2 và live-progress chính thức hỗ trợ các câu lệnh in cùng với thanh tiến trình

Trong hướng dẫn này, chúng ta đã thấy cách chỉ với một vài dòng mã, bạn có thể triển khai các thanh tiến trình trong tập lệnh python của mình. Hy vọng bạn tìm thấy điều này hữu ích

Làm cách nào để sử dụng thanh tiến trình trong Python?

Các bước để tạo Thanh tiến trình trong Python .
Bước 1. Cài đặt gói tqdm. Để bắt đầu, hãy cài đặt gói tqdm bằng cú pháp này. pip cài đặt tqdm. .
Bước 2. Viết mã Python. Hãy viết một mã Python đơn giản để. .
Bước 3. Tạo thanh tiến trình trong Python. .
Bước 4 (tùy chọn). Thêm GUI để theo dõi tiến trình của bạn

Làm thế nào để bạn sử dụng một thanh tiến trình?

Trong android có một lớp tên là ProgressDialog cho phép bạn tạo thanh tiến trình. Để làm điều này, bạn cần khởi tạo một đối tượng của lớp này. Cú pháp của nó là. Tiến trình ProgressDialog = new ProgressDialog(this);

Thanh tiến trình trong Python là gì?

Giới thiệu về thanh Tiến trình Python. Thanh tiến trình là phần tử điều khiển đồ họa hiển thị trạng thái của một quá trình máy tính đang chạy trong thời gian dài như tải xuống, truyền tệp hoặc cài đặt . Một bản trình bày tiến độ bằng văn bản ở định dạng phần trăm đôi khi được bao gồm trong hình ảnh trực quan.