user 0m0.274s
sys 0m3.325s
$ time find . -name '*.py' -exec cat \{} \; | tqdm | wc -l
857366it [00:03, 246471.31it/s]
857365
real 0m3.585s
user 0m0.862s
sys 0m3.358s
使用参数:
$ find . -name '*.py' -exec cat \{} \; |
tqdm --unit loc --unit_scale --total 857366 >> /dev/null
100%|███████████████████████████████████| 857K/857K [00:04<00:00, 246Kloc/s]
备份一个目录:
$ 7z a -bd -r backup.7z docs/ | grep Compressing |
tqdm --total $(find docs/ -type f | wc -l) --unit files >> backup.log
100%|███████████████████████████████▉| 8014/8014 [01:37<00:00, 82.29files/s]
通过看示范的代码,我们能发现使用的核心是tqdm和trange这两个函数,从代码层面分析tqdm的功能,那首先是init.py
__all__ = ['tqdm', 'tqdm_gui', 'trange', 'tgrange', 'tqdm_pandas',
'tqdm_notebook', 'tnrange', 'main', 'TqdmKeyError', 'TqdmTypeError',
'__version__']
跟踪到_tqdm.py,能看到tqdm类的声明,首先是初始化
def __init__(self, iterable=None, desc=None, total=None, leave=True,
file=sys.stderr, ncols=None, mininterval=0.1,
maxinterval=10.0, miniters=None, ascii=None, disable=False,
unit='it', unit_scale=False, dynamic_ncols=False,
smoothing=0.3, bar_format=None, initial=0, position=None,
gui=False, **kwargs):
Parameters
iterable : iterable, optional
Iterable to decorate with a progressbar.
可迭代的进度条。
Leave blank to manually manage the updates.
留空手动管理更新??
desc : str, optional
Prefix for the progressbar.
进度条的描述
total : int, optional
The number of expected iterations. If unspecified,
len(iterable) is used if possible. As a last resort, only basic
progress statistics are displayed (no ETA, no progressbar).
If gui is True and this parameter needs subsequent updating,
specify an initial arbitrary large positive integer,
e.g. int(9e9).
预期的迭代数目,默认为None,则尽可能的迭代下去,如果gui设置为True,这里则需要后续的更新,将需要指定为一个初始随意值较大的正整数,例如int(9e9)
leave : bool, optional
If [default: True], keeps all traces of the progressbar
upon termination of iteration.
保留进度条存在的痕迹,简单来说就是会把进度条的最终形态保留下来,默认为True
file : io.TextIOWrapper or io.StringIO, optional
Specifies where to output the progress messages
[default: sys.stderr]. Uses file.write(str) and file.flush()
methods.
指定消息的输出
ncols : int, optional
The width of the entire output message. If specified,
dynamically resizes the progressbar to stay within this bound.
If unspecified, attempts to use environment width. The
fallback is a meter width of 10 and no limit for the counter and
statistics. If 0, will not print any meter (only stats).
整个输出消息的宽度。如果指定,动态调整的进度停留在这个边界。如果未指定,尝试使用环境的宽度。如果为0,将不打印任何东西(只统计)。
mininterval : float, optional
Minimum progress update interval, in seconds [default: 0.1].
最小进度更新间隔,以秒为单位(默认值:0.1)。
maxinterval : float, optional
Maximum progress update interval, in seconds [default: 10.0].
最大进度更新间隔,以秒为单位(默认值:10)。
miniters : int, optional
Minimum progress update interval, in iterations.
If specified, will set mininterval to 0.
最小进度更新周期
ascii : bool, optional