Để sử dụng bất kỳ khung thanh tiến trình nào theo cách hữu ích, nghĩa là để có được phần trăm tiến độ thực tế và ETA ước tính, bạn cần có thể khai báo số bước sẽ có.
Vì vậy, chức năng tính toán của bạn trong một luồng khác, bạn có thể chia nó theo một số bước hợp lý không? Bạn có thể sửa đổi mã của nó?
Bạn không cần phải cấu trúc lại nó hoặc phân chia theo các phương thức thực tế, bạn chỉ có thể đặt một số chiến lược yield
ở một số nơi bên trong nó! Nếu hàm đắt tiền có một vòng lặp for , chỉ cần đặt một cái trong đó. Cuối cùng, bạn chỉ nên biết bao nhiêu sản lượng sẽ được thực hiện, để có kết quả tốt nhất.
Bằng cách đó, chức năng của bạn có thể là một cái gì đó như thế này:
def compute():
time.sleep(1) # some processing here
yield # insert these
time.sleep(1)
yield
time.sleep(1)
yield
hoặc này:
def compute():
for i in range(1000):
time.sleep(.1) # some processing here
yield # insert these
Với loại chức năng đó, bạn có thể cài đặt:
pip install alive-progress
Và sử dụng nó như:
from alive_progress import alive_bar
with alive_bar(3) as bar: # or a 1000 in the loop example.
for i in compute():
bar()
Để có được một thanh tiến độ mát mẻ!
|█████████████▎ | ▅▃▁ 1/3 [33%] in 1s (1.0/s, eta: 2s)
Tuyên bố miễn trừ trách nhiệm: Tôi là tác giả của live_prowards, nhưng nó sẽ giải quyết vấn đề của bạn tốt. Đọc tài liệu tại https://github.com/rsalmei/alive-proceed , đây là một ví dụ về những gì nó có thể làm: