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

Какой опыт с многопоточностью

В Python есть модуль threading для работы с потоками. Однако из-за GIL (Global Interpreter Lock) потоки выполняются не совсем параллельно — GIL переключается между ними. Это полезно для I/O-bound задач (сетевые запросы, чтение файлов), но не для CPU-bound задач (тяжелые вычисления).

Для CPU-bound задач лучше использовать multiprocessing, так как он создает отдельные процессы с собственным GIL.

Пример с потоками:

python
import threading

def worker(num):
    print(f"Поток {num} начал работу")
    # Имитация I/O операции
    time.sleep(1)
    print(f"Поток {num} завершил работу")

threads = []
for i in range(3):
    t = threading.Thread(target=worker, args=(i,))
    threads.append(t)
    t.start()

for t in threads:
    t.join()

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

  • Thread создает поток
  • start() запускает поток
  • join() ожидает завершения
  • Общие данные требуют синхронизации (Lock, RLock)
  • Для асинхронных задач можно использовать asyncio

Важно помнить про race conditions и deadlocks при работе с разделяемыми ресурсами.

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

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

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

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