File size: 4,196 Bytes
0bd62e5
1
{"cells": [{"cell_type": "markdown", "id": "302934307671667531413257853548643485645", "metadata": {}, "source": ["# Gradio Demo: progress"]}, {"cell_type": "code", "execution_count": null, "id": "272996653310673477252411125948039410165", "metadata": {}, "outputs": [], "source": ["!pip install -q gradio tqdm datasets"]}, {"cell_type": "code", "execution_count": null, "id": "288918539441861185822528903084949547379", "metadata": {}, "outputs": [], "source": ["import gradio as gr\n", "import random\n", "import time\n", "import tqdm\n", "from datasets import load_dataset\n", "import shutil\n", "from uuid import uuid4\n", "\n", "with gr.Blocks() as demo:\n", "    with gr.Row():\n", "        text = gr.Textbox()\n", "        textb = gr.Textbox()\n", "    with gr.Row():\n", "        load_set_btn = gr.Button(\"Load Set\")\n", "        load_nested_set_btn = gr.Button(\"Load Nested Set\")\n", "        load_random_btn = gr.Button(\"Load Random\")\n", "        clean_imgs_btn = gr.Button(\"Clean Images\")\n", "        wait_btn = gr.Button(\"Wait\")\n", "        do_all_btn = gr.Button(\"Do All\")\n", "        track_tqdm_btn = gr.Button(\"Bind TQDM\")\n", "        bind_internal_tqdm_btn = gr.Button(\"Bind Internal TQDM\")\n", "\n", "    text2 = gr.Textbox()\n", "\n", "    # track list\n", "    def load_set(text, text2, progress=gr.Progress()):\n", "        imgs = [None] * 24\n", "        for img in progress.tqdm(imgs, desc=\"Loading from list\"):\n", "            time.sleep(0.1)\n", "        return \"done\"\n", "    load_set_btn.click(load_set, [text, textb], text2)\n", "\n", "    # track nested list\n", "    def load_nested_set(text, text2, progress=gr.Progress()):\n", "        imgs = [[None] * 8] * 3\n", "        for img_set in progress.tqdm(imgs, desc=\"Nested list\"):\n", "            time.sleep(2)\n", "            for img in progress.tqdm(img_set, desc=\"inner list\"):\n", "                time.sleep(0.1)\n", "        return \"done\"\n", "    load_nested_set_btn.click(load_nested_set, [text, textb], text2)\n", "\n", "    # track iterable of unknown length\n", "    def load_random(data, progress=gr.Progress()):\n", "        def yielder():\n", "            for i in range(0, random.randint(15, 20)):\n", "                time.sleep(0.1)\n", "                yield None\n", "        for img in progress.tqdm(yielder()):\n", "            pass\n", "        return \"done\"\n", "    load_random_btn.click(load_random, {text, textb}, text2)\n", "\n", "    # manual progress\n", "    def clean_imgs(text, progress=gr.Progress()):\n", "        progress(0.2, desc=\"Collecting Images\")\n", "        time.sleep(1)\n", "        progress(0.5, desc=\"Cleaning Images\")\n", "        time.sleep(1.5)\n", "        progress(0.8, desc=\"Sending Images\")\n", "        time.sleep(1.5)\n", "        return \"done\"\n", "    clean_imgs_btn.click(clean_imgs, text, text2)\n", "\n", "    # no progress\n", "    def wait(text):\n", "        time.sleep(4)\n", "        return \"done\"\n", "    wait_btn.click(wait, text, text2)\n", "\n", "    # multiple progressions\n", "    def do_all(data, progress=gr.Progress()):\n", "        load_set(data[text], data[textb], progress)\n", "        load_random(data, progress)\n", "        clean_imgs(data[text], progress)\n", "        progress(None)\n", "        wait(text)\n", "        return \"done\"\n", "    do_all_btn.click(do_all, {text, textb}, text2)\n", "\n", "    def track_tqdm(data, progress=gr.Progress(track_tqdm=True)):\n", "        for i in tqdm.tqdm(range(5), desc=\"outer\"):\n", "            for j in tqdm.tqdm(range(4), desc=\"inner\"):\n", "                time.sleep(1)\n", "        return \"done\"\n", "    track_tqdm_btn.click(track_tqdm, {text, textb}, text2)\n", "\n", "    def bind_internal_tqdm(data, progress=gr.Progress(track_tqdm=True)):\n", "        outdir = \"__tmp/\" + str(uuid4())\n", "        load_dataset(\"beans\", split=\"train\", cache_dir=outdir)\n", "        shutil.rmtree(outdir)\n", "        return \"done\"\n", "    bind_internal_tqdm_btn.click(bind_internal_tqdm, {text, textb}, text2)\n", "\n", "if __name__ == \"__main__\":\n", "    demo.launch()\n"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}