Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import random | |
| import time | |
| import tqdm | |
| from datasets import load_dataset | |
| import shutil | |
| from uuid import uuid4 | |
| with gr.Blocks() as demo: | |
| with gr.Row(): | |
| text = gr.Textbox() | |
| textb = gr.Textbox() | |
| with gr.Row(): | |
| load_set_btn = gr.Button("Load Set") | |
| load_nested_set_btn = gr.Button("Load Nested Set") | |
| load_random_btn = gr.Button("Load Random") | |
| clean_imgs_btn = gr.Button("Clean Images") | |
| wait_btn = gr.Button("Wait") | |
| do_all_btn = gr.Button("Do All") | |
| track_tqdm_btn = gr.Button("Bind TQDM") | |
| bind_internal_tqdm_btn = gr.Button("Bind Internal TQDM") | |
| text2 = gr.Textbox() | |
| # track list | |
| def load_set(text, text2, progress=gr.Progress()): | |
| imgs = [None] * 24 | |
| for img in progress.tqdm(imgs, desc="Loading from list"): | |
| time.sleep(0.1) | |
| return "done" | |
| load_set_btn.click(load_set, [text, textb], text2) | |
| # track nested list | |
| def load_nested_set(text, text2, progress=gr.Progress()): | |
| imgs = [[None] * 8] * 3 | |
| for img_set in progress.tqdm(imgs, desc="Nested list"): | |
| time.sleep(2) | |
| for img in progress.tqdm(img_set, desc="inner list"): | |
| time.sleep(0.1) | |
| return "done" | |
| load_nested_set_btn.click(load_nested_set, [text, textb], text2) | |
| # track iterable of unknown length | |
| def load_random(data, progress=gr.Progress()): | |
| def yielder(): | |
| for i in range(0, random.randint(15, 20)): | |
| time.sleep(0.1) | |
| yield None | |
| for img in progress.tqdm(yielder()): | |
| pass | |
| return "done" | |
| load_random_btn.click(load_random, {text, textb}, text2) | |
| # manual progress | |
| def clean_imgs(text, progress=gr.Progress()): | |
| progress(0.2, desc="Collecting Images") | |
| time.sleep(1) | |
| progress(0.5, desc="Cleaning Images") | |
| time.sleep(1.5) | |
| progress(0.8, desc="Sending Images") | |
| time.sleep(1.5) | |
| return "done" | |
| clean_imgs_btn.click(clean_imgs, text, text2) | |
| # no progress | |
| def wait(text): | |
| time.sleep(4) | |
| return "done" | |
| wait_btn.click(wait, text, text2) | |
| # multiple progressions | |
| def do_all(data, progress=gr.Progress()): | |
| load_set(data[text], data[textb], progress) | |
| load_random(data, progress) | |
| clean_imgs(data[text], progress) | |
| progress(None) | |
| wait(text) | |
| return "done" | |
| do_all_btn.click(do_all, {text, textb}, text2) | |
| def track_tqdm(data, progress=gr.Progress(track_tqdm=True)): | |
| for i in tqdm.tqdm(range(5), desc="outer"): | |
| for j in tqdm.tqdm(range(4), desc="inner"): | |
| time.sleep(1) | |
| return "done" | |
| track_tqdm_btn.click(track_tqdm, {text, textb}, text2) | |
| def bind_internal_tqdm(data, progress=gr.Progress(track_tqdm=True)): | |
| outdir = "__tmp/" + str(uuid4()) | |
| load_dataset("beans", split="train", cache_dir=outdir) | |
| shutil.rmtree(outdir) | |
| return "done" | |
| bind_internal_tqdm_btn.click(bind_internal_tqdm, {text, textb}, text2) | |
| if __name__ == "__main__": | |
| demo.queue(concurrency_count=20).launch() | |