问题描述

在使用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。调大就能同时处理多个访问了。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐