Skip to content

I/O-bound task

In programming, an I/O-bound task is a type of computing task that primarily spends its time waiting for input/output (I/O) operations to complete. These operations can include reading from or writing to a file, network communication, or interacting with external devices.

The speed of the I/O-bound tasks is limited by the system’s I/O capabilities rather than the CPU’s processing power.

When dealing with I/O-bound tasks, using asynchronous programming or multithreading can be beneficial. These techniques allow a program to perform other operations while waiting for I/O operations to complete. This behavior can improve the overall efficiency and responsiveness of the application.

Example

Here’s an example using Python’s asyncio module to handle I/O-bound tasks consisting of multiple concurrent network requests:

Python
import asyncio

async def fetch_data(url, delay):
    print(f"Starting request to {url}")
    await asyncio.sleep(delay)  # Simulates network I/O
    print(f"Finished request to {url}")
    return f"Data from {url}"

async def main():
    results = await asyncio.gather(
        fetch_data("api.example.com/users", 2),
        fetch_data("api.example.com/posts", 1),
    )
    print(results)

asyncio.run(main())

In this example, fetch_data() is an asynchronous function that simulates a network request. Using asyncio.gather(), you can run multiple requests concurrently, which is advantageous when the task is I/O-bound.

Tutorial

Python's asyncio: A Hands-On Walkthrough

Explore how Python asyncio works and when to use it. Follow hands-on examples to build efficient programs with coroutines and awaitable tasks.

advanced python

For additional information on related topics, take a look at the following resources:


By Leodanis Pozo Ramos • Updated March 10, 2026 • Reviewed by Dan Bader