Mediumthreading

Что такое threading?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

threading — потоки ОС, ограниченные GIL. Для I/O-bound (network, file) работают; для CPU-bound — не ускоряют.

import threading

t = threading.Thread(target=func, args=(...))
t.start()
t.join()

# high-level API
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=4) as ex:
    futures = [ex.submit(func, item) for item in items]
    results = [f.result() for f in futures]
  • Lock, RLock (reentrant) — mutual exclusion;
  • Condition — wait/notify, Event — signaling, Semaphore, Barrier;
  • queue.Queue — thread-safe FIFO (producer-consumer);
  • threading.local() — thread-local storage;
  • Daemon threads (daemon=True) — умирают при выходе main thread;
  • Для CPU-bound — multiprocessing; для тысяч concurrent I/O — asyncio.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.