# Batch functions Gradio supports the ability to pass _batch_ functions. Batch functions are just functions which take in a list of inputs and return a list of predictions. For example, here is a batched function that takes in two lists of inputs (a list of words and a list of ints), and returns a list of trimmed words as output: ```py import time def trim_words(words, lens): trimmed_words = [] time.sleep(5) for w, l in zip(words, lens): trimmed_words.append(w[:int(l)]) return [trimmed_words] ``` The advantage of using batched functions is that if you enable queuing, the Gradio server can automatically _batch_ incoming requests and process them in parallel, potentially speeding up your demo. Here's what the Gradio code looks like (notice the `batch=True` and `max_batch_size=16`) With the `gr.Interface` class: ```python demo = gr.Interface( fn=trim_words, inputs=["textbox", "number"], outputs=["output"], batch=True, max_batch_size=16 ) demo.launch() ``` With the `gr.Blocks` class: ```py import gradio as gr with gr.Blocks() as demo: with gr.Row(): word = gr.Textbox(label="word") leng = gr.Number(label="leng") output = gr.Textbox(label="Output") with gr.Row(): run = gr.Button() event = run.click(trim_words, [word, leng], output, batch=True, max_batch_size=16) demo.launch() ``` In the example above, 16 requests could be processed in parallel (for a total inference time of 5 seconds), instead of each request being processed separately (for a total inference time of 80 seconds). Many Hugging Face `transformers` and `diffusers` models work very naturally with Gradio's batch mode: here's [an example demo using diffusers to generate images in batches](https://github.com/gradio-app/gradio/blob/main/demo/diffusers_with_batching/run.py)