标签: tqdm

python多处理星图进度条

由于我的工作函数中需要多个参数,所以我使用了星图,但是如何使用 tqdm 显示进度?

from itertools import repeat
from multiprocessing import Pool

def func(i, a, b, c):
    print(i, a, b, c)

if __name__ == '__main__':  
    pool = Pool(thread_num)
    a, b, c = 'a', 'b', 'c'
    pool.starmap(func, zip(range(100), repeat(a), repeat(b), repeat(c)))
    pool.close()
    pool.join()
Run Code Online (Sandbox Code Playgroud)

那么如何使用 tqdm 来显示进度?

python multiprocessing tqdm

5
推荐指数
1
解决办法
3691
查看次数

将进度条添加到 gdal.Warp()

我试图找出一种在 gdal.Warp() 中使用进度条来显示完成了多少工作的方法。对于进度条,我使用 Tqdm 和 gdal.Warp() 用于从远程 URL 裁剪图像

def getSubArea(url):
  vsicurl_url = '/vsicurl/' + url
  output_file = 'someID_subarea.tif'
  gdal.SetConfigOption('GDAL_HTTP_UNSAFESSL', 'YES')
  gdal.Warp(output_file, vsicurl_url, dstSRS='EPSG:4326', cutlineDSName='area.geojson', cropToCutline=True)
Run Code Online (Sandbox Code Playgroud)

我知道有一个callback论点报告从 0 到 1 的进度,但它仅在 gdal.warp 完成下载裁剪图像后才调用。

gdal python-2.7 tqdm

5
推荐指数
1
解决办法
662
查看次数

无法显示类型为 HBox 的 Jupyter Widget;小部件 JavaScript 库丢失?

在使用Keras训练模型时,我尝试使用keras-tqdm在我的 Jupyter 笔记本中获取进度条,但我遇到了以下错误消息:

无法显示 HBox 类型的 Jupyter 小部件。

如果您在 Jupyter Notebook 或 JupyterLab Notebook 中阅读此消息,则可能意味着小部件 JavaScript 仍在加载。如果此消息仍然存在,则可能意味着未安装或未启用小部件 JavaScript 库。有关设置说明,请参阅Jupyter 小部件文档

如果您正在另一个前端(例如,GitHub 或 NBViewer 上的静态渲染)阅读此消息,则可能意味着您的前端当前不支持小部件。

我访问了他们链接到的文档页面并执行了他们的命令。似乎没有任何效果,我不知道下一步是什么。

早些时候它只是说我有一个旧版本的 JavaScript 小部件,我需要一个更新的小部件。我按照各种说明尝试更新 JavaScript 小部件,这就是发生的原因。

需要明确的是,这是文档中的命令:

conda install -c conda-forge ipywidgets
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到以下信息:

# All requested packages already installed.
# packages in environment at C:\ProgramData\Anaconda2\envs\py36:
#
ipywidgets                7.1.1                    py36_0    conda-forge
Run Code Online (Sandbox Code Playgroud)

其中 py36 是我正在使用的环境。

我接下来可以做什么?

jupyter jupyter-notebook tqdm

5
推荐指数
1
解决办法
2677
查看次数

如何帮助 tqdm 计算自定义迭代器中的总数

我正在实现我自己的迭代器。tqdm 不显示进度条,因为它不知道列表中元素的总数。我不想使用“total=”,因为它看起来很丑。相反,我更愿意在我的迭代器中添加一些 tqdm 可以用来计算总数的东西。

class Batches:
    def __init__(self, batches, target_input):
        self.batches = batches
        self.pos = 0
        self.target_input = target_input

    def __iter__(self):
        return self

    def __next__(self):
        if self.pos < len(self.batches):
            minibatch = self.batches[self.pos]
            target = minibatch[:, :, self.target_input]
            self.pos += 1
            return minibatch, target
        else:
            raise StopIteration

    def __len__(self):
        return self.batches.len()
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?在上面的代码中添加什么...

使用 tqdm 如下所示..

for minibatch, target in tqdm(Batches(test, target_input)):

    output = lstm(minibatch)
    loss = criterion(output, target)
    writer.add_scalar('loss', loss, tensorboard_step)
Run Code Online (Sandbox Code Playgroud)

python tqdm

5
推荐指数
2
解决办法
5493
查看次数

将自定义变量/统计信息添加到 tqdm 栏

我想知道是否可以将自定义变量添加到 tqdm 栏,其中该值有时会随着每次迭代而更新。例如:

exception_count = 0
for _ in tqdm(range(1000), bar_format="Exceptions: counthere | Elapsed: {elapsed} |{rate_fmt}"):
    try:
        do_stuff()
    except Exception:
        exception_count += 1
Run Code Online (Sandbox Code Playgroud)

我想exception_countbar_format参数的某处添加变量作为自定义错误计数器的类型。

python python-3.x tqdm

5
推荐指数
1
解决办法
575
查看次数

并行进程覆盖进度条 (tqdm)

我正在用 Python 3.7 编写一个脚本,该脚本使用multiprocessing.Process(每个内核一个任务)启动多个并行任务。为了跟踪每个进程的进度,我使用了tqdm实现进度条的库。我的代码如下所示:

with tqdm(total=iterator_size) as progress_bar:
     for row in tqdm(batch):
         process_batch(batch)
         progress_bar.update(1)
Run Code Online (Sandbox Code Playgroud)

进度条确实会相应地更新,但由于多个进程运行上面的代码,每个进程都会覆盖控制台上的进度条,如下面的屏幕截图所示。

在此处输入图片说明

完成后,控制台正确显示完成的进度条:

在此处输入图片说明

我的目标是让进度条更新而不会相互覆盖。有没有办法实现这一目标?

一个可能的解决方案是只在需要最长的进程上显示进度条(我事先知道哪个是),但最好的情况是根据第二张图片为每个进程更新一个。

所有解决方案在线地址multiprocess.Pool,但我不打算改变我的架构,因为我可以充分利用multiprocess.Process.

parallel-processing concurrency python-3.x tqdm

5
推荐指数
1
解决办法
2319
查看次数

如何设置tqdm的r_bar部分

我使用 tqdm 打印带有 hyperopt 的长时间运行优化过程的进度条。这个过程调用一个函数 500 次,每次调用大约需要 10 到 20 分钟,所以我开始让进度显示更精细一点,并tqdm.update在循环中添加了一些 -语句,逐步推进进度条以避免有两个嵌套的进度条,同时仍然能够立即看到到目前为止执行了多少函数调用。

现在丑陋的结果是这样的:

 15%|????                    | 73.69999999999993/500 [7:40:31<102:54:08, 868.98s/it, evaluating fold 2 of  2 folds...]Iteration 1, loss = 2.50358388
Run Code Online (Sandbox Code Playgroud)

你可以在上面看到,这是函数的第 73 次调用,第 73 次函数调用大约完成了 70%。事实上,我只是估计了m函数中子步骤的数量(可能因调用而异)并使用分数1/m来更新进度条。然后在函数调用之后,我只是将进度条同步回一个完整的整数,以避免添加舍入错误。

当然,准确性在这里根本不是问题。但我想显示 73.70 而不是 73.69999999999993。我已经尝试将我的更新值四舍五入到两个小数位,这并不能解决问题,因为浮点数的精度问题,如果一个数字不能完全用浮点数表示,那么它又变得丑陋了。根据tqdm文档,这部分隐藏在r_bar整个格式字符串的部分中,但我找不到设置它的方法。你能帮我解决这个问题吗?

根据文档r_bar默认为:

r_bar='| {n_fmt}/{total_fmt} [{elapsed}<{remaining}, '
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

with tqdm(iterable=None, initial=num_trials, maxinterval=maxinterval, total=max_evals, ascii=False, disable=show_progressbar is False) as progress_bar:
    def fn_to_minimize(*args, **kwargs):
        return fn(*args, **kwargs, _progress_bar=progress_bar)

    for num_trials in range(num_trials, …
Run Code Online (Sandbox Code Playgroud)

python-3.x tqdm

5
推荐指数
1
解决办法
2435
查看次数

刷新笔记本浏览器窗口时,如何使 Jupyter 笔记本小部件保持不变?

Jupyter 小部件,如 HTML 进度条,会在笔记本浏览器窗口刷新时(或远程重新连接到笔记本时)消失。我正在尝试查看如何在刷新窗口时使它们持久化并重新呈现。

假设我为 Jupyter 设置了这样的小部件:

jupyter nbextension enable --py widgetsnbextension
Run Code Online (Sandbox Code Playgroud)

然后我启动一个这样的笔记本:

import time

import ipykernel
import ipywidgets
import IPython
import jupyter
import notebook
import tqdm
import tqdm.notebook
import widgetsnbextension

print('ipykernel version: ', ipykernel.__version__)
print('ipywidgets version: ', ipywidgets.__version__)
print('IPython version: ', IPython.__version__)
print('Jupyter version: ', jupyter.__version__)
print('Jupyter notebook version: ', notebook.__version__)
print('tqdm version: ', tqdm.__version__)
print('widgetsnbextension version: ', widgetsnbextension.__version__)
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到的版本打印如下:

ipykernel version:  5.1.3
ipywidgets version:  7.5.1
IPython version:  7.9.0
Jupyter version:  1.0.0
Jupyter notebook version:  6.0.2
tqdm version:  4.40.0 …
Run Code Online (Sandbox Code Playgroud)

python widget jupyter ipywidgets tqdm

5
推荐指数
0
解决办法
610
查看次数

Python:如何用嵌套循环中的下一个替换 tqdm 进度条?

我在 Jupyter Notebook 中使用tqdm模块。假设我有以下带有嵌套 for 循环的代码。

import time
from tqdm.notebook import tqdm

for i in tqdm(range(3)):
    for j in tqdm(range(5)):
        time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

100%|??????????| 3/3 [00:15<00:00, 5.07s/it]
100%|??????????| 5/5 [00:10<00:00, 2.02s/it]

100%|??????????| 5/5 [00:05<00:00, 1.01s/it]

100%|??????????| 5/5 [00:05<00:00, 1.01s/it]
Run Code Online (Sandbox Code Playgroud)

是否有任何选项,如何在运行期间仅显示当前 j进度条?那么,完成迭代后的最终输出会是这样吗?

100%|??????????| 3/3 [00:15<00:00, 5.07s/it]
100%|??????????| 5/5 [00:05<00:00, 1.01s/it]
Run Code Online (Sandbox Code Playgroud)

python jupyter-notebook tqdm

5
推荐指数
2
解决办法
4458
查看次数

如何在 Kubernetes 中使用 tqdm

我正在使用 Kubernetes,并且一个训练作业在集群上运行。我使用 TQDM 作为进度条,但与我预期的不同,当我检查 Kubernetes Pod 日志时,进度条没有显示。有没有人有解决这个问题的方法?

kubernetes tqdm kubeflow

5
推荐指数
2
解决办法
417
查看次数