实现Python代码中显示运行进度,有如下几种场景

  1. tqdm(iterable)
  2. tqdm.notebook
  3. tqdm.pandas
  4. 其他



一、tqdm(iterable)

tqdm是 python的一个关于进度条的扩展包, 只需用 包装任何可迭代对象tqdm(iterable),就完成了! 下载实验数据 test_mda.csv.gz

import pandas as pd

df = pd.read_csv('test_mda.csv.gz', compression='gzip')
df


from tqdm import tqdm

ws = []
for text in tqdm(df['text'], desc='词频分析进度'):
    ws.append( len(jieba.lcut(text)) )

Run

词频分析进度: 100%|███████████████████████████| 100/100 [00:01<00:00, 52.51it/s]



二、tqdm.notebook

tqdm 也能与 jupyter notebook 适配。 例如

from tqdm.notebook import tqdm

ws = []
for text in tqdm(df['text'], desc='词频分析进度'):
    ws.append(word_count(text))

Run

词频分析进度: 100%|███████████████████████████| 100/100 [00:01<00:00, 55.39it/s]

此时的进度条是绿色,而不是灰黑色。



三、tqdm.pandas

熟悉 pandas.apply 操作的, 会觉得刚刚代码太麻烦了。 为了显示进度条, tqdm.pandas 初始化后, 将 .apply 更改为 .progress_apply

import jieba

tqdm.pandas(desc="词频分析进度")

df['text'].progress_apply(lambda text: len(jieba.lcut(text)))

Run

词频分析进度: 100%|███████████████████████████| 100/100 [00:01<00:00, 53.60it/s]



其他情况

使用 pandarallel 并行库, 会根据电脑 cpu 核数 n 显示 n 个进度条。

from pandarallel import pandarallel
pandarallel.initialize(progress_bar=True)

def count(text):
    import jieba
    return len(jieba.lcut(text))

df['text'].parallel_apply(lambda text: count(text))



广而告之