【gradio】gradio构建webui demo时只支持一个访问?
问题描述
在使用webui的过程中发现,如果上一个任务处理不完,则会影响其他功能的使用,此时如果使用其他功能,或者有其他人在使用webui时,会出现In queue的提示,则必须得等上一个任务完成之后才能进行下一个任务,GPU的显存利用率非常低,此时我们可以使用queue()方法给webui创建队列。
def launch():
with gr.Blocks(theme=gr.themes.Soft()) as demo:
# 静态界面
gr.HTML(html_content)
with gr.Row():
with gr.Column():
...
# 界面编写
fn_button.click(handle_upload,
inputs=[video_inputs, language_inputs, switch_inputs],
outputs=[text_outputs, srt_outputs])
# 原有默认限制为1,这里改成10
demo.queue(default_concurrency_limit=10)
demo.launch(server_name=webui_host, server_port=webui_port, share=True)
if __name__ == "__main__":
launch()
参数解析
-
concurrency_count:并发处理请求的工作线程数,默认为1。增加此值将增加请求处理的速率,但也会增加队列的内存使用量。
-
status_update_rate:状态更新的频率,以秒为单位。默认为”auto”,表示队列将在每个作业完成时向所有客户端发送状态估计。
-
default_concurrency_limit:限制并发处理请求的工作线程数,默认为1。调大就能同时处理多个访问了。