Thanh tiến trình là một thành phần điều khiển đồ họa được sử dụng để trực quan hóa tiến trình của một hoạt động máy tính mở rộng, chẳng hạn như tải xuống, truyền tệp hoặc cài đặt. Đôi khi, đồ họa được kèm theo một bản trình bày bằng văn bản về tiến trình ở định dạng phần trăm. Khái niệm này cũng có thể được coi là bao gồm "thanh phát lại" trong trình phát phương tiện theo dõi vị trí hiện tại trong thời lượng của tệp phương tiện
Một sự phát triển gần đây hơn là thanh tiến trình không xác định, được sử dụng trong các trường hợp không xác định được mức độ của nhiệm vụ hoặc tiến trình của nhiệm vụ không thể được xác định theo cách có thể được biểu thị dưới dạng phần trăm. Thanh này sử dụng chuyển động hoặc một số chỉ báo khác để cho biết rằng tiến trình đang diễn ra, thay vì sử dụng kích thước của phần được lấp đầy để hiển thị tổng lượng tiến trình, làm cho nó giống một cái đập hơn là một thanh tiến trình [xem thêm cột của thợ cắt tóc]. Ngoài ra còn có các chỉ báo tiến độ không xác định, không có dạng thanh
Lịch sử[sửa]
Khái niệm thanh tiến trình được phát minh trước khi máy tính kỹ thuật số. Năm 1896, Karol Adamiecki đã phát triển một biểu đồ có tên là biểu đồ hài hòa, nhưng ngày nay được biết đến nhiều hơn với tên biểu đồ Gantt. Tuy nhiên, Adamiecki đã không xuất bản biểu đồ của mình cho đến năm 1931, và sau đó chỉ bằng tiếng Ba Lan. Do đó, biểu đồ hiện mang tên Henry Gantt [1861–1919], người đã thiết kế biểu đồ của mình vào khoảng những năm 1910–1915 và phổ biến nó ở phương Tây
Áp dụng khái niệm này vào máy tính, thanh tiến trình đồ họa đầu tiên xuất hiện trong Nghiên cứu Tiến sĩ năm 1979 của Mitchell Model. Đ. luận án, Giám sát hành vi của hệ thống trong môi trường tính toán phức tạp. [1] Năm 1985, Brad Myers đã trình bày một bài báo về “các chỉ số tiến độ hoàn thành theo phần trăm” tại một hội nghị về tương tác giữa máy tính và con người. [2]
Nhận thức[sửa]
Nghiên cứu của Myers liên quan đến việc yêu cầu mọi người chạy tìm kiếm cơ sở dữ liệu, một số có thanh tiến trình và một số không có. Những người chờ đợi trong khi xem thanh tiến trình đã mô tả trải nghiệm tổng thể tích cực hơn. Myers kết luận rằng việc sử dụng thanh tiến độ làm giảm sự lo lắng và hiệu quả hơn. [3]
Thông thường, thanh tiến trình sử dụng hàm tuyến tính, sao cho mức tăng của thanh tiến trình tỷ lệ thuận với khối lượng công việc đã hoàn thành. Tuy nhiên, việc thay đổi đĩa, bộ nhớ, bộ xử lý, băng thông và các yếu tố khác làm phức tạp ước tính này. Do đó, các thanh tiến trình thường thể hiện các hành vi phi tuyến tính, chẳng hạn như tăng tốc, giảm tốc và tạm dừng. Những hành vi này, cùng với nhận thức phi tuyến tính của con người về thời gian trôi qua, tạo ra nhận thức khác nhau về thời gian hoàn thành các thanh tiến trình. [4] Điều này cũng có nghĩa là thanh tiến trình có thể được thiết kế để "cảm thấy" nhanh hơn
Cuối cùng, thiết kế đồ họa của các thanh tiến trình cũng đã được chứng minh là có ảnh hưởng đến nhận thức của con người về thời lượng. [5]
Hàng giờ làm việc chăm chỉ sẽ trở nên vô ích nếu chương trình của chúng ta không phản hồi trong quá trình thực thi. Thông thường, chúng tôi bắt gặp các tập dữ liệu lớn hoặc các vòng lặp dài hơn, mất nhiều thời gian để hoàn thành, chẳng hạn như trong Data Scraping
Trong khi các lệnh này đang được thực thi và các vòng lặp lớn đang được xử lý đằng sau màn hình, có vẻ như bạn phải chờ đợi vô tận cho đến khi toàn bộ quá trình hoàn tất. Do đó, Tạo Thanh tiến trình sẽ giải quyết vấn đề này
Thanh tiến độ sẽ giúp chúng tôi xem xét tiến độ thực hiện và quản lý mức độ lo lắng của chúng tôi. Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo Thanh tiến trình trong Python bằng Jupyter Notebook
mục lục
- Giới thiệu
- tqdm trong trăn là gì
- Cách sử dụng tqdm[] hoặc tqdm trong python
- Sử dụng tqdm_notebook[]
- Sử dụng tqdm[] và tqdm_notebook[] với Pandas
- so sánh. Sử dụng tqdm[] và tqdm_notebook[] trên Vòng lặp lồng nhau
- ví dụ python tqdm
- Phần kết luận
Giới thiệu
tqdm là một thư viện trong Python được sử dụng để tạo Đồng hồ đo tiến độ hoặc Thanh tiến trình. tqdm lấy tên từ tên tiếng Ả Rập taqaddum có nghĩa là 'tiến bộ'
Việc triển khai tqdm có thể được thực hiện dễ dàng trong các vòng lặp, hàm hoặc thậm chí là Pandas của chúng tôi. Thanh tiến trình khá hữu ích trong Python vì
1. Người ta có thể xem Kernel có còn hoạt động không
2. Thanh tiến trình hấp dẫn trực quan đối với mắt
3. Nó cung cấp Thời gian thực thi mã và Thời gian ước tính để mã hoàn thành, điều này sẽ hữu ích khi làm việc trên các bộ dữ liệu khổng lồ
Xa hơn nữa, chúng ta sẽ xem xét cách sử dụng tqdm[], tqdm_notebook[] và ứng dụng của chúng Trong Pandas trong Jupyter Notebook
Sử dụng tqdm[ ]
tqdm cung cấp một loại thanh tiến trình giao diện điều khiển cho các quy trình của chúng tôi. Sử dụng tqdm là một quá trình đơn giản được giải thích trong các bước sau
1. Cài đặt các yêu cầu
Trước tiên, chúng ta cần cài đặt thư viện tqdm cần thiết. Mở Notebook Jupyter mới và thực hiện
!pip install tqdm !pip install time
Điều này sẽ hoàn thành việc cài đặt tqdm. Khởi động lại Kernel để bắt đầu sử dụng tqdm
2. Nhập thư viện
Nhập thư viện thời gian và tqdm mới được cài đặt
from tqdm import tqdm import time
3. Sử dụng tqdm[]
Mã Python
Bây giờ chúng ta sẽ sử dụng hàm tqdm[] trên một chương trình đơn giản có vòng lặp for
for i in tq[range[20]]: time.sleep[0.5]
Ở đây i là biến nhận giá trị từ 0 đến 19 trong mỗi lần lặp. Trong mỗi lần lặp, hệ thống sẽ ngủ trong 0. 5 giây trước khi chuyển sang lần lặp tiếp theo
Mã hoàn chỉnh sẽ trông như thế này
Khi hoàn thành thực thi mã, chúng tôi nhận được
Chúng ta cũng có thể cung cấp các thuộc tính cho tqdm[] chẳng hạn như desc, thuộc tính này nhận một chuỗi và sẽ được thêm làm tiền tố trước thanh tiến trình. Như vậy,
from tqdm import tqdm import time for i in tqdm[range[20], desc = 'tqdm[] Progress Bar']: time.sleep[0.5]
Khi hoàn thành thực thi mã, chúng tôi nhận được
Nguồn ảnh – Máy tính cá nhân
Ngoài thanh tiến trình, tqdm còn cung cấp thông tin bổ sung như số lần lặp đã hoàn thành trong tổng số lần lặp, Tổng thời gian đã trôi qua, Thời gian ước tính để hoàn thành toàn bộ vòng lặp và tốc độ của vòng lặp tính theo số lần lặp trên giây [hoặc
Sử dụng tqdm_notebook[]
Không giống như tqdm[], tqdm_notebook[] cung cấp phiên bản có màu của thanh tiến trình. Nó có 3 bộ màu theo mặc định
Thanh Màu xanh lam chuyển động hiển thị cho một quá trình đang diễn ra, Thanh màu xanh lá cây ổn định cho biết quá trình đã hoàn tất, Thanh màu đỏ cho biết quá trình đang bị dừng. Điều thú vị là, giống như tqdm[], tqdm_notebook[] cũng có cách triển khai đơn giản
1. Nhập thư viện
from tqdm.notebook import tqdm_notebook import time
2. Sử dụng tqdm_notebook[]
for i in tqdm_notebook[range[10]]: time.sleep[0.5]
Ở đây i là biến nhận giá trị từ 0 đến 19 trong mỗi lần lặp. Trong mỗi lần lặp, hệ thống sẽ ngủ trong 0. 5 giây trước khi chuyển sang lần lặp tiếp theo
Mã hoàn chỉnh sẽ trông như thế này
from tqdm.notebook import tqdm_notebook import time for i in tqdm_notebook[range[10]]: time.sleep[0.5]
Khi thực thi mã, chúng tôi nhận được
Nguồn ảnh – Máy tính cá nhân
Khi hoàn thành thực thi mã, chúng tôi nhận được
Nguồn ảnh – Máy tính cá nhân
Nếu việc thực thi Mã bị Chấm dứt
Nguồn ảnh – Máy tính cá nhân
Chú ý màu của Progress Bar
Chúng ta có thể đưa ra các đối số bổ sung vào tqdm_notebook[] chẳng hạn như desc để thêm tiền tố vào Thanh tiến trình. Mã sẽ trông như thế này
from tqdm.notebook import tqdm_notebook import time for i in tqdm_notebook[range[10], desc = 'Progress using tqdm_notebook[]']: time.sleep[0.5]
Khi thực thi mã, chúng tôi nhận được
Sử dụng tqdm_notebook[] trong Pandas
Cả tqdm[] và tqdm_notebook[] đều có thể được sử dụng trong Pandas. Một cách là sử dụng chúng với các vòng lặp for với Chuỗi Pandas hoạt động giống như với các vòng lặp mà chúng ta đã thấy trước đó. Một cách khác là sử dụng chúng trong Pandas. phương pháp áp dụng []. Để sử dụng tqdm[] hoặc tqdm_notebook[] cho. áp dụng. apply[] cần được thay thế bằng. process_apply[]
Ví dụ: hãy lấy một tập dữ liệu từ Kaggle
________số 8Khi hoàn thành thực thi mã, chúng tôi nhận được
Nguồn ảnh – Máy tính cá nhân
tqdm_notebook. pandas[] chịu trách nhiệm hiển thị thanh tiến trình. Thanh tiến trình hiển thị chức năng áp dụng đang được áp dụng trên tất cả các giá trị của cột Churn. Điều đáng chú ý là, tiến độ. apply[] hoạt động giống như. phương thức áp dụng [] của Pandas
so sánh. Sử dụng tqdm_notebook[] và tqdm[] trên Vòng lặp lồng nhau Vòng lặp
Đầu tiên, hãy xem một ví dụ về cách sử dụng tqdm[] trên các vòng lặp lồng nhau
from tqdm import tqdm for i in tqdm[range[2], desc = 'Loop 1']: for j in tqdm[range[20,25], desc = 'Loop 2']: time.sleep[0.5]
Khi hoàn thành thực thi mã, chúng tôi nhận được
Nguồn ảnh – Máy tính cá nhân
Bây giờ, hãy xem tqdm_notebook[] trên các vòng lặp lồng nhau
from tqdm import tqdm import time0
Khi hoàn thành thực thi mã, chúng tôi nhận được
Nguồn ảnh – Máy tính cá nhân
Rõ ràng là tqdm[] có nhiều thanh tiến trình hơn. Đối với mỗi lần lặp của Vòng 1, nó hiển thị một thanh tiến trình riêng và trong mỗi lần lặp của Vòng 1, nó hiển thị các thanh tiến trình riêng cho mỗi lần lặp của Vòng 2
Do đó, đối với thanh tiến trình đầu tiên của Vòng 1, nó hiển thị 5 thanh tiến trình của Vòng 2, sau đó, đối với thanh tiến trình thứ hai của Vòng 1, nó hiển thị 5 thanh tiến trình riêng biệt của Vòng 2, v.v.
Ngược lại với tqdm[], Progress Bars trong tqdm_notebook[] rất trực quan. Nó chỉ hiển thị một thanh tiến trình cho Vòng 1 và cho mỗi lần lặp của Vòng 1, một thanh tiến trình của Vòng 2. Nghe có vẻ khó đọc nhưng nó sẽ trở nên dễ hiểu khi bạn chạy mã
Phần kết luận
Như vậy, việc theo dõi tiến trình giúp tiết kiệm rất nhiều thời gian và giúp chúng ta không bị nhầm lẫn. Ngoài thuộc tính desc của cả tqdm[] và tqdm_notebook[], nó có thêm các thuộc tính phụ thuộc vào người dùng cuối và nhu cầu của họ
Sử dụng tqdm[] có một ưu điểm nữa là nó có tài liệu hướng dẫn rất chi tiết giúp mọi người có thể tham khảo bất cứ lúc nào. Có thể có nhiều tùy chỉnh cho các thanh tiến trình và nhiều tùy chỉnh khác có thể có trong các bản cập nhật trong tương lai
Ngoài tqdm và tqdm_notebook, người ta có thể theo dõi tiến trình bằng cách sử dụng thanh tiến trình, thanh tiến trình2 và tiến trình Alive
Giới thiệu về tác giả
Kết nối với tôi trên LinkedIn Tại đây
Xem các bài viết khác của tôi Tại đây và trên Phương tiện
Bạn có thể cung cấp phản hồi có giá trị cho tôi trên LinkedIn
Cảm ơn đã cho thời gian của bạn
Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả.