博主原文链接:https://www.yourmetaverse.cn/nlp/445/
实时进度追踪与可视化:Gradio库中的Progress模块详解
使用Gradio库中的Progress模块和其__call__和tqdm方法可以实现自定义的进度追踪器。在函数签名中添加一个参数,该参数的默认值设置为gradio.Progress()
的实例,即可将Progress追踪器附加到函数中。可以通过调用Progress对象或使用Iterable上的tqdm
方法来更新函数中的进度追踪器。目前,进度追踪器仅在使用queue()
方法时可用。
下面是一个示例用法:
import gradio as gr
import time
def my_function(x, progress=gr.Progress()):
progress(0, desc="开始...")
time.sleep(1)
for i in progress.tqdm(range(100)):
time.sleep(0.1)
return x
gr.Interface(my_function, gr.Textbox(), gr.Textbox()).queue().launch()
在上述示例中,my_function
是一个带有进度追踪器的函数。函数中的progress(0, desc="开始...")
表示进度追踪器的初始状态,然后通过for
循环和tqdm
方法迭代并更新进度追踪器。最后,函数返回输入参数x。
Progress的初始化参数track_tqdm
可以设置为True,以便在函数中使用tqdm库时追踪其迭代过程。
Progress模块的__call__
方法用于更新进度追踪器的进度和消息文本。progress
参数可以是一个浮点数(表示完成的进度,取值范围为0到1之间),也可以是一个元组,其中第一个数字表示已完成的步骤数,第二个值表示总步骤数(如果未知则为None),还可以是None(隐藏进度条)。desc
参数用于设置描述文本,total
参数用于设置估计的总步骤数,unit
参数用于设置迭代的单位。
Progress模块的tqdm
方法将进度追踪器附加到可迭代对象上,类似于tqdm库的使用方式。iterable
参数是要附加进度追踪器的可迭代对象,desc
参数用于设置描述文本,total
参数用于设置估计的总步骤数,unit
参数用于设置迭代的单位。
使用Gradio的Progress模块和其提供的方法,可以方便地实现函数的进度追踪和可视化,为用户提供更好的交互体验。
参数详解
__call__
方法参数
参数/方法 | 描述 | 数据类型 | 默认值 | 解释 |
---|---|---|---|---|
progress | 进度的完成度。如果为浮点数,应该在0到1之间。如果为元组,第一个数字表示已完成的步骤数,第二个值表示总步骤数,如果未知则为None。如果为None,则隐藏进度条。 | float | tuple[int, int|None] | None | - | 进度的完成度。如果为浮点数,应该在0到1之间。如果为元组,第一个数字表示已完成的步骤数,第二个值表示总步骤数,如果未知则为None。如果为None,则隐藏进度条。 |
desc | 描述文本。 | 字符串 | None | None | 描述文本。 |
total | 预估的总步骤数。 | 整数 | None | None | 预估的总步骤数。 |
unit | 迭代的单位。 | 字符串 | “steps” | 迭代的单位。 |
tqdm
方法参数
参数/方法 | 描述 | 数据类型 | 默认值 | 解释 |
---|---|---|---|---|
iterable | 要附加进度跟踪器的可迭代对象。 | 可迭代对象 | None | - | 要附加进度跟踪器的可迭代对象。 |
desc | 描述文本。 | 字符串 | None | None | 描述文本。 |
total | 预估的总步骤数。 | 整数 | None | None | 预估的总步骤数。 |
unit | 迭代的单位。 | 字符串 | “steps” | 迭代的单位。 |