首页 > 解决方案 > 是否可以将 tqdm 用于不是循环的进程?

问题描述

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

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

from time import time, sleep
from tqdm import tqdm

for i in tqdm([1]):
    sleep(10)

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

标签: pythontqdm

解决方案


您可以定义块大小。持续 10 秒的条假定您已经知道加载文件所需的时间...

尝试这个

from tqdm import tqdm_notebook as tqdm

chunk_size = 1000
total_chunks=nrows/chunk_size

chunks = pd.read_sql_query(query, connection, index_col='index_name',chunksize= chunk_size)
raw_train_data=pd.DataFrame()

with tqdm(total=total_chunks) as pbar:

    for chunk in chunks:
        raw_train_data = pd.concat([raw_train_data, chunk])
        pbar.update(1)

推荐阅读