我tqdm在Python 3.6(Anaconda 3,Windows 10 x64,PyCharm IDE)中使用一个包(v4.19.5)进行了200K +迭代的循环。它过于频繁地打印状态栏,因此我以前的历史记录在控制台中消失了。
有没有办法限制状态栏更新的频率?我似乎找不到在线或tqdm网站上的解决方案。
目前,我的状态栏是这样打印的。理想情况下,我想为百分比变化设置上限。例如,每1%更改/进度更新一次的频率不超过一次。
我想知道处理某个列表需要多长时间。
for a in tqdm(list1):
if a in list2:
#do something
Run Code Online (Sandbox Code Playgroud)
但这不起作用。如果我使用for a in tqdm(range(list1))我将无法检索列表值。
你知道怎么做吗?
我正在尝试找到一种方法,与其他打印一起获取 pyqt 应用程序中进度条的结果/演变,例如在 QPlainTextEdit 小部件中。
我面临的问题是,进度条可以使用一些更高级的回车符,甚至更高级的光标定位,而这些大多不被字符串支持。我已经尝试过io.StringIO,但\r仍保持字面意思。
import io
from tqdm import tqdm
s = io.StringIO()
for i in tqdm(range(3), file=s):
sleep(.1)
Run Code Online (Sandbox Code Playgroud)
输出:
s.getvalue()
Out[24]: '\n\r 0%| | 0/3 [00:00<?, ?it/s]\x1b[A\n\r 33%|###3 | 1/3 [00:00<00:00, 9.99it/s]\x1b[A\n\r 67%|######6 | 2/3 [00:00<00:00, 9.98it/s]\x1b[A\n\r100%|##########| 3/3 [00:00<00:00, 9.98it/s]\x1b[A\n\x1b[A'
Run Code Online (Sandbox Code Playgroud)
翻译为:
print(s.getvalue())
0%| | 0/3 [00:00<?, ?it/s]
33%|###3 | 1/3 [00:00<00:00, 9.99it/s]
67%|######6 | 2/3 [00:00<00:00, 9.98it/s]
100%|##########| 3/3 [00:00<00:00, 9.98it/s]
Run Code Online (Sandbox Code Playgroud)
需要明确的是,在我的输出中,我不想每次 tqdm 更新一行,而只是当前状态,因为它将打印在命令行上。
知道如何做到这一点吗?谢谢!
我可以找到用于 group by 和其他 Pandas 操作的 tqdm 进度条的示例。但在合并或加入时找不到任何内容。
是否可以在 pandas 上使用 tqdm 进行合并?
我正在使用 tqdm 递归目录树。我不知道我将使用的路径数量,而且我不想在我做工作之前构建该列表只是为了获得准确的总数,我宁愿让它将进度条更新为它继续。
我发现我可以很好地使用 'reset(total=new_total)',但这也会重置时间。有没有办法可以保持时间,但只需将总数设置为新的东西?
我想在每个进程中使用 4 个 python 进程和 tqdm 进度条:
\n 66%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x8c | 80/122 [00:44<00:23, 1.79it/s]\n 35%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x89 | 18/52 [00:08<00:16, 2.01it/s]\n 26%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x8b | 61/108 [00:44<00:34, 1.38it/s]\n 56%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x8b | 61/108 [00:44<00:34, 1.38it/s]\nRun Code Online (Sandbox Code Playgroud)\n所以它们就像同时显示和更新的 4 个一样。\n我怎样才能实现这一目标?
\n我正在使用在 python 中tqdm跟踪for循环的进度。
import numpy as np
from tqdm import tqdm
x = np.arange(20000000)
x_30 = []
for _x in tqdm(x):
x_30.append(_x**30)
Run Code Online (Sandbox Code Playgroud)
进度条如下所示。
你能帮我解释一下进度条吗?我真的不明白。
为了提供一些上下文,我有一个转换器,它分两步请求 JSON 数据,第一步是请求完整数量的 Data_points,第二步是请求每个数据点的详细信息。为了跟踪进度,因为我期望从此时开始请求大量数据。这就是我使用 tqdm 的原因,它确实使我的程序执行速度减慢了至少 8 倍。
\nimport requests\nimport json\nimport os\nimport time\nfrom datetime import timedelta\nfrom datetime import datetime\nfrom datetime import date\nimport pandas as pd\nimport shutil\nimport zipfile\nimport smtplib, ssl\nfrom progress.bar import Bar\nfrom tqdm import tqdm\nfrom time import sleep\nRun Code Online (Sandbox Code Playgroud)\n这是代码:
\ndef fetch_data_points(url: str):\n limit_request = 100\n # Placeholder for limit: please do not remove = 1000000000 -JJ\n folder_path_reset("api_request_jsons","csv","Geographic_information")\n total_start_time = start_time_measure()\n start_time = start_time_measure(\n \'Starting Phase 1: First request from API: Data Points\')\n\n for i in tqdm(range(limit_request)):\n response …Run Code Online (Sandbox Code Playgroud) 如果我在迭代dict时试图获得进度条,我怎么能用tqdm做到这一点?我正在使用Python 2.7.
这适用于列表:
for i in tdqm(l, len(l):
<do stuff>
Run Code Online (Sandbox Code Playgroud)
但未能完成决定:
for k, v in tqdm(d.items(), len(d)):
<do stuff>
Run Code Online (Sandbox Code Playgroud)
用dicts做这个的正确方法是什么?
这是一个真实的例子:
d = {'k1':1, 'k2':2}
for k, v in tqdm(d.items(), len(d)):
print 'foo'
a = 1 + 100
print 'bar'
Run Code Online (Sandbox Code Playgroud)
我明白了:
-------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-30-7e4ce2b85414> in <module>()
1 d = {'k1':1, 'k2':2}
----> 2 for k, v in tqdm(d.items(), len(d)):
3 print 'oasdlkfj'
4 a = 1 + 100
5 print 'y'
/home/monica/anaconda2/envs/pytorch_p27/lib/python2.7/site-packages/tqdm/_tqdm.pyc in __init__(self, iterable, …Run Code Online (Sandbox Code Playgroud) 我所有的 python 脚本都接受一个名为 的 bool 参数debug,如果为 True,则打印出大量内容并for使用tqdm如下所示的循环进度条
from tqdm import tqdm
for i in tqdm(range(1000)):
## rest of the calculation
Run Code Online (Sandbox Code Playgroud)
但是,我想tqdm在 debug 为 false 时禁用进度条,除了在for没有tqdm(对于 debug=False 的情况下)再次重写循环之外,我不知道如何执行此操作。非常感谢有关如何更优雅地执行此操作的任何建议。
谢谢
我一直在尝试将tqdm Python 库中的tqdm进度条保存到文本文件中。我尝试将sys.stdout和sys.stderr重定向到一个文件:
但是,仅保存stdout的输出(例如打印语句),而不保存tqdm进度条。进度条保留在控制台中。