can*_*nin 21
使用“禁用”参数的示例:
from tqdm import tqdm
import time
for i in tqdm(range(10), disable=True):
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
disable您可以设置一个参数True以使任何tqdm输出静音(实际上,它也将完全跳过进度条计算,而不仅仅是显示)。
要动态切换它,您只需在脚本中添加命令行参数即可定义是否disable设置。这对于单元测试和cron应该都适用。
小智 8
用于在使用它的代码中mock.patch替换tqdm如下内容:
def notqdm(iterable, *args, **kwargs):
"""
replacement for tqdm that just passes back the iterable
useful to silence `tqdm` in tests
"""
return iterable
Run Code Online (Sandbox Code Playgroud)
并在测试中:
import mock
...
@mock.patch('tested_code_module.tqdm', notqdm)
def test_method(self):
...
Run Code Online (Sandbox Code Playgroud)
当您需要全局禁用 all 时,这是非常常见的用例tqdm,最好不要更改所有使用它且您可能无法控制的地方的代码。有关实现这样的功能,过去多年,导致没有(讨论1,2,3,4)。用户需要修补 tqdm 以停止污染日志。我发现的最短方法之一可能是这样的:
from tqdm import tqdm
from functools import partialmethod
tqdm.__init__ = partialmethod(tqdm.__init__, disable=True)
Run Code Online (Sandbox Code Playgroud)
这个想法是默认初始化器的已经支持(但不够)的参数。这还不够,因为您需要在实例化 tqdm 的每个地方添加它,这是您不想要的。
该补丁独立于导入的顺序工作,并将影响所有随后创建的tqdm对象。
| 归档时间: |
|
| 查看次数: |
1539 次 |
| 最近记录: |