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 подскажет развёрнутый ответ в реальном времени.