标签: tqdm

通过tqdm.write()在python脚本中重定向打印命令

我正在使用tqdmPython在我们的脚本中显示控制台进度条.但是,我必须将调用print消息的函数调用到控制台,而且我无法更改.通常,在控制台中显示进度条的同时写入控制台会使显示屏变得如此:

from time import sleep
from tqdm import tqdm

def blabla():
  print "Foo blabla"

for k in tqdm(range(3)):
  blabla()
  sleep(.5)
Run Code Online (Sandbox Code Playgroud)

这会创建输出:

0%|                                           | 0/3 [00:00<?, ?it/s]Foo
blabla
33%|###########6                       | 1/3 [00:00<00:01,  2.00it/s]Foo
blabla
67%|#######################3           | 2/3 [00:01<00:00,  2.00it/s]Foo
blabla
100%|###################################| 3/3 [00:01<00:00,  2.00it/s]
Run Code Online (Sandbox Code Playgroud)

根据tqdm该方法的文档tqdm.write()提供了一种在不破坏显示的进度条的情况下将消息写入控制台的方法.因此,此片段提供了正确的输出:

from time import sleep
from tqdm import tqdm

def blabla():
  tqdm.write("Foo blabla")

for k in tqdm(range(3)):
  blabla()
  sleep(.5)
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

Foo blabla
Foo blabla
Foo blabla
100%|###################################| 3/3 …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 tqdm

13
推荐指数
3
解决办法
1万
查看次数

使用tqdm的asyncio aiohttp进度条

我正在尝试集成一个tqdm进度条来监视aiohttp在Python 3.5中生成的POST请求.我有一个工作进度条,但似乎无法使用收集结果as_completed().指针感激不尽.

我发现的示例建议使用以下模式,该模式与Python 3.5 async def定义不兼容:

for f in tqdm.tqdm(asyncio.as_completed(tasks), total=len(coros)):
    yield from f
Run Code Online (Sandbox Code Playgroud)

在没有进度条的情况下工作(虽然部分编辑)异步代码:

def async_classify(records):

    async def fetch(session, name, sequence):
        url = 'https://app.example.com/api/v0/search'
        payload = {'sequence': str(sequence)}
        async with session.post(url, data=payload) as response:
            return name, await response.json()

    async def loop():
        auth = aiohttp.BasicAuth(api_key)
        conn = aiohttp.TCPConnector(limit=100)
        with aiohttp.ClientSession(auth=auth, connector=conn) as session:
            tasks = [fetch(session, record.id, record.seq) for record in records]
            responses = await asyncio.gather(*tasks)    
        return OrderedDict(responses)
Run Code Online (Sandbox Code Playgroud)

这是我修改的失败尝试loop():

async def …
Run Code Online (Sandbox Code Playgroud)

progress-bar python-asyncio aiohttp python-3.5 tqdm

13
推荐指数
1
解决办法
4775
查看次数

将"print"功能更改为"tqdm.write",以便日志记录不会干扰进度条

我有一个简单的问题:如何将内置的Python记录器的print功能更改为tqdm.write使得记录消息不会干扰tqdm的进度条?谢谢!

python logging tqdm

13
推荐指数
2
解决办法
6330
查看次数

如何显式“刷新”tqdm 进度条?

我经常看到,tqdm进度条被其他打印件打破,例如:

 93%|??????????| 28/30 [00:02<00:00, 13.44it/s]Subject S9
100%|??????????| 30/30 [00:02<00:00, 12.94it/s]
 93%|??????????| 28/30 [00:02<00:00, 11.49it/s]Pickling...
100%|??????????| 30/30 [00:02<00:00, 11.47it/s]
Run Code Online (Sandbox Code Playgroud)

这里应该只显示 2 个进度条。尽管如此成功,打印一些文本会以很高的百分比中断进度条,其余的会在之后打印出来。

是否可以以某种方式“刷新”进度条?

我读过,默认情况下会tqdm打印stderr并尝试刷新它

sys.stderr.flush()
Run Code Online (Sandbox Code Playgroud)

但这没有帮助。

以上都是在PyCharm控制台模拟中发生的,所以可以与此相关。

python flush pycharm tqdm

12
推荐指数
3
解决办法
2万
查看次数

如何更改 tqdm 的条形大小

我正在使用tqdm的进度条,我想通过使用一个参数来缩短进度条本身,以指示进度条应该有多少个进度条

所以而不是这个

Training (16): 100%|?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????| 983/984 [00:04<00:00, 242.42it/s, loss=0.0598]
Run Code Online (Sandbox Code Playgroud)

我会得到这样的东西

Training (16): 100%|?????????????| 983/984 [00:04<00:00, 242.42it/s, loss=0.0598]
Run Code Online (Sandbox Code Playgroud)

我已经探索了的构造bar_format函数中的参数tqdm,但无法弄清楚如何更改它的大小。

python tqdm

12
推荐指数
2
解决办法
9197
查看次数

是否可以将 tqdm 用于不是循环的进程?

我正在编写一个程序,其中的操作需要几秒钟(加载大文件)。幸运的是,它总是需要相同的时间。所以,为了用户的利益,我想做一个进度条。然而,tqdm似乎是为循环设计的。可以说这sleep(10)是一个需要时间的过程。我该如何解决这个问题?

我想为一个不是循环的长过程制作一个进度条。

from time import time, sleep
from tqdm import tqdm

for i in tqdm([1]):
    sleep(10)
Run Code Online (Sandbox Code Playgroud)

这段代码的问题是进度条将保持为零,然后在进程结束时跳到 100%。我想要一个在 10 秒内持续变化的进度条。

python tqdm

12
推荐指数
2
解决办法
1万
查看次数

pd.Series.apply 函数上的进度条在 Windows 上不起作用。AttributeError:“Series”对象没有属性“_is_builtin_func”

我想在 jupyter 笔记本中看到 apply 函数的进度条。
在 Ubuntu 上一切正常,在 Windows 10 上我收到错误。

代码:

from tqdm.notebook import tqdm

tqdm.pandas()

preprocessed_text_test = df.text_col.progress_apply(
    lambda x: [
        x
    ]
)
Run Code Online (Sandbox Code Playgroud)

错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_23140/2942098042.py in <module>
      3 tqdm.pandas()
      4 
----> 5 preprocessed_text_test = df.text_col.progress_apply(
      6     lambda x: [
      7         x

~\Anaconda3\envs\dev\lib\site-packages\tqdm\std.py in inner(df, func, *args, **kwargs)
    779 
    780                 try:
--> 781                     func = df._is_builtin_func(func)
    782                 except TypeError:
    783                     pass

~\Anaconda3\envs\dev\lib\site-packages\pandas\core\generic.py in __getattr__(self, name)
   5476         ):
   5477             return self[name]
-> …
Run Code Online (Sandbox Code Playgroud)

python tqdm

12
推荐指数
0
解决办法
7770
查看次数

如何使tqdm与詹金斯玩得很好?

喜欢tqdm进度条,但是当我在jenkins上使用它时,我会在stdout(特别是无所不在[A)中得到一堆奇怪的文物和太多的臃肿.在tqdm中是否有秘密模式使其与jenkins很好地协同工作?用于无缝检测jenkins等非交互式shell的奖励积分.这是我的典型输出:

label: 0it [00:00, ?it/s][A
[A
 16%|#6        | 5378/33302 [36:28<2:30:49,  3.09it/s]
[A
 16%|#6        | 5379/33302 [36:29<2:36:46,  2.97it/s]
[A
...
Run Code Online (Sandbox Code Playgroud)

jenkins tqdm

11
推荐指数
1
解决办法
364
查看次数

如何正确地将标准输出、日志记录和 tqdm 重定向到 PyQt 小部件中

长话短说

\n

答案请参见:

\n
    \n
  1. 我的 2019 年最初使用文本编辑和 stdout/stderr 流重定向接受了答案,请参阅/sf/answers/3855776501/
  2. \n
  3. 我的第二个答案,现在标记为已接受的答案:使用真正的 QProgressBar 的派生和改进方法!/sf/answers/5186428061/
  4. \n
\n

问题

\n

首先,我知道很多问题都与这个问题类似。\n但是在花了这么多时间之后,我现在向社区寻求帮助。

\n

我开发并使用了一堆依赖于 的 python 模块tqdm。\n我希望它们可以在 Jupyter、控制台或 GUI 中使用。\n在 Jupyter 或控制台中一切正常:日志记录/打印和 tqdm 进度之间没有冲突酒吧。以下是显示控制台/Jupyter 行为的示例代码:

\n
# coding=utf-8\nfrom tqdm.auto import tqdm\nimport time\nimport logging\nimport sys\nimport datetime\n__is_setup_done = False\n\n\ndef setup_logging(log_prefix):\n    global __is_setup_done\n\n    if __is_setup_done:\n        pass\n    else:\n        __log_file_name = "{}-{}_log_file.txt".format(log_prefix,\n                                                      datetime.datetime.utcnow().isoformat().replace(":", "-"))\n\n        __log_format = \'%(asctime)s - %(name)-30s - %(levelname)s - %(message)s\'\n        __console_date_format = \'%Y-%m-%d %H:%M:%S\'\n        __file_date_format = \'%Y-%m-%d %H-%M-%S\'\n\n        root …
Run Code Online (Sandbox Code Playgroud)

python logging stdout pyqt tqdm

10
推荐指数
2
解决办法
9598
查看次数

如何在 Pytorch Lightning 中禁用进度条

我在 Pytorch Lightning 中的 tqdm 进度条有很多问题:

  • 当我在终端中进行培训时,进度条会自行覆盖。在训练阶段结束时,验证进度条会打印在训练条下方,但当结束时,下一个训练阶段的进度条会打印在前一阶段的进度条上。因此不可能看到以前时期的损失。
INFO:root:  Name    Type Params
0   l1  Linear    7 K
Epoch 2:  56%|?????????????          | 2093/3750 [00:05<00:03, 525.47batch/s, batch_nb=1874, loss=0.714, training_loss=0.4, v_nb=51]
Run Code Online (Sandbox Code Playgroud)
  • 进度条左右摇晃,是部分亏损小数点后位数变化造成的。
  • 在 Pycharm 中运行时,不会打印验证进度条,而是,
INFO:root:  Name    Type Params
0   l1  Linear    7 K
Epoch 1:  50%|?????     | 1875/3750 [00:05<00:05, 322.34batch/s, batch_nb=1874, loss=1.534, training_loss=1.72, v_nb=49]
Epoch 1:  50%|?????     | 1879/3750 [00:05<00:05, 319.41batch/s, batch_nb=1874, loss=1.534, training_loss=1.72, v_nb=49]
Epoch 1:  52%|??????    | 1942/3750 [00:05<00:04, 374.05batch/s, batch_nb=1874, loss=1.534, training_loss=1.72, v_nb=49]
Epoch 1:  53%|??????    | 2005/3750 [00:05<00:04, 425.01batch/s, …
Run Code Online (Sandbox Code Playgroud)

tqdm pytorch

10
推荐指数
3
解决办法
3555
查看次数