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

Насколько хорошо использовать потоки для I/O bound задач в Python

В Python потоки (threading) подходят для I/O bound задач, но с важными оговорками:

  • GIL (Global Interpreter Lock) не мешает при I/O операциях, так как поток освобождает GIL во время ожидания (чтение/запись файлов, сетевые запросы)
  • Потоки легковеснее процессов, создаются быстрее
  • Хорошо подходят для задач с частым ожиданием (API запросы, работа с БД)

Пример:

python
import threading
import requests

def fetch_url(url):
    response = requests.get(url)
    print(f"{url}: {len(response.content)} bytes")

urls = ["https://python.org", "https://google.com", "https://github.com"]
threads = [threading.Thread(target=fetch_url, args=(url,)) for url in urls]

for t in threads:
    t.start()
for t in threads:
    t.join()

Но для CPU-bound задач лучше использовать multiprocessing. Для современных асинхронных I/O задач часто предпочтительнее asyncio.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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