是否可以将 tqdm 用于不是循环的进程?

Nic*_*ais 12 python tqdm

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

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

from time import time, sleep
from tqdm import tqdm

for i in tqdm([1]):
    sleep(10)
Run Code Online (Sandbox Code Playgroud)

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

小智 9

手动设置 tqdm 的进度值:

#Manually set p_bar
p_bar = tqdm(range(10))
p_bar.update(5)
p_bar.refresh()
time.sleep(1)
#another way to do it
p_bar.n = 7
p_bar.refresh()
Run Code Online (Sandbox Code Playgroud)


Car*_*sSR 4

您可以定义块大小。持续 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)
Run Code Online (Sandbox Code Playgroud)