实现Python代码中显示运行进度,有如下几种场景
- tqdm(iterable)
- tqdm.notebook
- tqdm.pandas
- 其他
一、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))