Back to questions
Junior — Middle
53
Какое решение применяется для обработки задач, ограниченных операциями ввода-вывода?
Companies where asked
Леста
Answer from AI
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 задач лучше использовать многопроцессность.