Встречается на 2% собеседований по Python

Где оптимальнее применять потоки в Python

Потоки в Python оптимальны для задач, связанных с I/O-bound операциями (сетевыми запросами, чтением/записью файлов), где основное время тратится на ожидание. Из-за GIL (Global Interpreter Lock) потоки не дают выигрыша в CPU-bound задачах — для них лучше использовать процессы (multiprocessing).

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

python
import threading
import requests

def download(url):
    response = requests.get(url)
    print(f"Downloaded {url}")

urls = ["http://example.com/file1", "http://example.com/file2"]
threads = []

for url in urls:
    thread = threading.Thread(target=download, args=(url,))
    thread.start()
    threads.append(thread)

for thread in threads:
    thread.join()

Когда не использовать:

  • CPU-heavy задачи (математические вычисления, обработка изображений).
  • Критичные к порядку выполнения операции (потоки выполняются недетерминированно).

Для асинхронного I/O (asyncio) может быть эффективнее, чем потоки, особенно при высоких нагрузках.

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

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

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