我正在使用 for 循环遍历目录树中的大型组文件。
这样做时,我想通过控制台中的进度条监视进度。因此,我决定为此使用 tqdm。
目前,我的代码如下所示:
for dirPath, subdirList, fileList in tqdm(os.walk(target_dir)):
sleep(0.01)
dirName = dirPath.split(os.path.sep)[-1]
for fname in fileList:
*****
Run Code Online (Sandbox Code Playgroud)
输出:
Scanning Directory....
43it [00:23, 11.24 it/s]
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是它没有显示进度条。我想知道如何正确使用它并更好地了解它的工作原理。另外,如果有任何其他可以在此处使用的 tqdm 替代方案。
在我的 python 项目中,我使用tqdm模块来显示进度条。\n我想在进度条之前的行上打印一条持久消息。
该set_description方法在同一行上打印消息,同时tqdm.write创建一个新行。
使用set_description
$ python pbar.py\n{Task_1 message} 3%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 ]
有可能实现这一点
\n\n$ python pbar.py\n{Task_1 message} \n3%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 ]
编辑:
\n\nfrom tqdm import tqdm\n\npbar = tqdm(m_list)\nfor item in m_list:\n # Do work\n pbar.update(1)\npbar.close()\nRun Code Online (Sandbox Code Playgroud)\n 我有一个 tqdm 进度条:
print('foo')
for status in tqdm(cursor.items(count)):
#process status
pass
Run Code Online (Sandbox Code Playgroud)
我在循环之前打印了一些消息,但进度条显示在它们之前。是否有任何类型的多线程或我该如何解决这个问题?
当我使用tqdmin 时screen,它会无限期地在栏中打印一个新行和未知字符。
Epoch 0: 5%|?? | 255/5474 [03:31<1:12:09, 1.21it/s]
Epoch 0: 2%|? | 90/5474 [01:24<1:23:46, 1.07it/s]
Epoch 0: 2%|? | 89/5474 [01:23<1:23:57, 1.07it/s]
Run Code Online (Sandbox Code Playgroud)
我用bash作为默认shell并添加了以下配置
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
root@35573c9f245c:~/git/pytorch-openai-transformer-lm# cat ~/.screenrc
# ~/.screenrc
defshell -bash # dash makes it a login shell
Run Code Online (Sandbox Code Playgroud)
相同的代码在其他终端中运行良好。
关于这个问题的任何提示?谢谢!
我想progresser()针对一系列输入参数 ( ) 并行化任务 ( L)。每个任务的进度应通过终端中的单独进度条进行监控。我正在使用tqdm进度条包。以下代码在我的 Mac 上最多可运行 23 个进度条(L = list(range(23))及以下),但会产生从 开始的进度条的混乱跳跃L = list(range(24))。有谁知道如何解决这个问题?
from time import sleep
import random
from tqdm import tqdm
from multiprocessing import Pool, freeze_support, RLock
L = list(range(24)) # works until 23, breaks starting at 24
def progresser(n):
text = f'#{n}'
sampling_counts = 10
with tqdm(total=sampling_counts, desc=text, position=n+1) as pbar:
for i in range(sampling_counts):
sleep(random.uniform(0, 1))
pbar.update(1)
if __name__ == '__main__':
freeze_support()
p = Pool(processes=None, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 tqdm 或其他一些库在以下代码行中显示进度条:
corrmatrix = adjClose.corr('spearman')
其中 adjClose 是一个数据框,其中包含许多股票代码作为列和按日期索引的多年收盘价。输出最终是一个相关矩阵。
随着更多的代码被添加到数据框中,这段代码往往会花费更多的时间,我想要某种进度的视觉表示来指示代码仍在运行。除非我严重忽略了一些东西,否则谷歌在这方面并没有出现太多。
我正在尝试使用 Python 中提供的 tqdm 模块打印优化算法的进度状态,但是,每次我尝试更新它时,它都会在新行中打印进度,有没有办法我只能更新原始的 tqdm bar 在开始时被实例化?我的代码如下,它基于 backtrader 回测库:
\ndef optimizer_callbacks(cb):\n pbar.update()\n\ndef strategy_optim(**kwargs):\n\n total = np.prod([len(value) for key,value in kwargs.items()])\n\n csv_file = FDaxCSVData(---data---)\n cerebro = bt.Cerebro()\n cerebro.adddata(csv_file) \n cerebro.broker.setcash(500000.0)\n cerebro.broker.setcommission(commission=2.0)\n\n strats = cerebro.optstrategy(strategy_name, printlog = False, **kwargs)\n\n global pbar\n pbar = tqdm.tqdm(smoothing=0.05, desc='Optimization Runs', total=total)\n cerebro.optcallback(optimizer_callbacks)\n\n runnings = cerebro.run(optreturn=False, maxcpus=2) \n\nif __name__=="__main__":\n strategy_optim(periods = [100, 200, 300], abs_margin= [25, 50, 75], trail_stop=[10, 20, 30, 40])\nRun Code Online (Sandbox Code Playgroud)\n输出:
\nOptimization Runs: 0%| | 0/12 [00:00<?, ?it/s]\nOptimization Runs: 8%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x89 | …Run Code Online (Sandbox Code Playgroud) 我正在使用一个flask-sqlalchemy会话,其中有一个返回列表的简单查询:
results = db.session.query(Item).filter(Item.score > 0).all()
Run Code Online (Sandbox Code Playgroud)
由于我不知道完成查询需要多长时间,因此我希望看到一个进度条。
这里提供的答案似乎没有承认从早期读取操作创建块的问题。tqdm 可以与数据库读取一起使用吗?就我而言,我pandas两者都不使用。
正如标题所暗示的,我试图在执行pandas.to_csv.
我有以下脚本:
def filter_pileup(pileup, output, lists):
tqdm.pandas(desc='Reading, filtering, exporting', bar_format=BAR_DEFAULT_VIEW)
# Reading files
pileup_df = pd.read_csv(pileup, '\t', header=None).progress_apply(lambda x: x)
lists_df = pd.read_csv(lists, '\t', header=None).progress_apply(lambda x: x)
# Filtering pileup
intersection = pd.merge(pileup_df, lists_df, on=[0, 1]).progress_apply(lambda x: x)
intersection.columns = [i for i in range(len(intersection.columns))]
intersection = intersection.loc[:, 0:5]
# Exporting filtered pileup
intersection.to_csv(output, header=None, index=None, sep='\t')
Run Code Online (Sandbox Code Playgroud)
在前几行中,我找到了一种集成进度条的方法,但此方法对最后一行不起作用,我该如何实现?
我在 Jupyter 笔记本中使用 tqdm 进行异步操作——我应该使用tqdm.notebook(我认为这能让我得到正确的小部件)还是tqdm.asyncio(这可能会让我得到正确的行为——items/sec calc 在我的使用中似乎关闭了) 。
tqdm ×10
python ×8
pandas ×2
back-testing ×1
backtrader ×1
correlation ×1
gnu-screen ×1
logging ×1
progress ×1
progress-bar ×1
python-2.7 ×1
shell ×1
sqlalchemy ×1
terminal ×1