Встречается на собеседованиях • сегодня

Как решается I/O bound задача

Для решения I/O bound задач в Python используются асинхронные подходы, позволяющие эффективно работать с операциями ввода-вывода (сеть, файлы, БД) без блокировки потока. Основные методы:

  1. Asyncio (нативный модуль Python для асинхронного кода)
python
import asyncio

async def fetch_data(url):
    # Асинхронный HTTP-запрос
    reader, writer = await asyncio.open_connection(url, 80)
    writer.write(b"GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
    await writer.drain()
    data = await reader.read()
    return data
  1. Потоки (Threading) - для задач, где asyncio не подходит
python
from threading import Thread
import requests

def fetch_url(url):
    response = requests.get(url)
    print(response.status_code)

threads = [Thread(target=fetch_url, args=("https://example.com",)) for _ in range(5)]
for t in threads:
    t.start()
for t in threads:
    t.join()
  1. Использование пулов (ThreadPoolExecutor, ProcessPoolExecutor)

Ключевые моменты:

  • Asyncio идеален для сетевых операций
  • Threading лучше для блокирующего I/O (например, файловые операции)
  • Важно избегать смешивания подходов без необходимости
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы