python - tqdm 在较大循环内具有间隔
问题描述
我有一个外循环
for i in itertools.count():
并且有间隔发生的事件:
if i % log_interval == 0:
perform_logging()
if i % save_interval == 0:
save()
# etc.
我想使用 tqdm 来跟踪下一个日志/保存/等的进度。理想情况下,tqdm 会同时打印多个进度条,例如
最好的方法是什么?谢谢!
解决方案
像这样的东西:
from __future__ import division, print_function
import itertools
from math import ceil
from tqdm import tqdm
from time import sleep
total = 987
log_interval = 2
save_interval = 9
with tqdm(total=total, desc="overall") as tOverall:
with tqdm(total=ceil(total / log_interval), unit="log") as tLog:
with tqdm(total=ceil(total / save_interval), unit="save") as tSave:
for i in itertools.count(0, 1):
sleep(0.01)
if i % log_interval == 0:
perform_logging()
tLog.update()
if i % save_interval == 0:
save()
tSave.update()
if i + 1 == total:
break
tOverall.update()
print('\n')
推荐阅读
- android - 它说“尝试加载库”然后应用程序退出而没有任何信息
- macos - 如何在使用 Chrome 和 macOS 的全屏模式下输入新的
- php - Symfony ManyToMany setter 返回错误数据
- r - 如何使用正则表达式将一组文本转换为列表
- c++ - 我应该如何声明我的对象才能正确使用这些功能?
- java - 如何使用其他方法中定义的数组变量?
- visual-studio - 是否有适用于 Visual Studio 2019 的 Visual Studio 安装程序项目类型?
- java - Java 数组搜索和排序未按预期工作
- python - 无法在 python3 中使用 hashlib 将 sha1 编码为十六进制
- math - 扑克游戏中获胜组合的概率