Sobes.tech
Назад к вопросам
Junior — Middle
54

Какое решение применяется для обработки задач, ограниченных операциями ввода-вывода?

Компании, где спрашивали
Леста

Ответ от нейросети

sobes.tech AI

Для обработки задач, ограниченных операциями ввода-вывода (I/O-bound), в Python часто применяют асинхронное программирование с использованием asyncio или многопоточность.

Поскольку операции ввода-вывода обычно блокируют поток, асинхронный подход позволяет запускать другие задачи, пока ожидается завершение I/O, что повышает эффективность.

Пример с использованием asyncio для чтения нескольких файлов одновременно:

import asyncio

async def read_file(filename):
    print(f"Start reading {filename}")
    await asyncio.sleep(1)  # имитация операции ввода-вывода
    print(f"Finished reading {filename}")

async def main():
    await asyncio.gather(
        read_file('file1.txt'),
        read_file('file2.txt'),
        read_file('file3.txt')
    )

asyncio.run(main())

Такой подход позволяет эффективно использовать время ожидания I/O, не блокируя основной поток. Для CPU-bound задач лучше использовать многопроцессность.