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

Работал ли с GIL

Да, работал. GIL (Global Interpreter Lock) — это механизм в CPython, который позволяет выполняться только одному потоку за раз, даже на многоядерных системах. Это упрощает управление памятью и делает CPython потокобезопасным, но ограничивает параллелизм.

Когда это проблема:

  • При CPU-bound задачах (например, вычисления), где потоки не ускоряют выполнение.
  • В многопоточных приложениях, где требуется настоящий параллелизм.

Как обойти:

  1. Использовать multiprocessing вместо threading для CPU-bound задач.
  2. Применять асинхронность (asyncio) для I/O-bound задач.
  3. Использовать C-расширения или альтернативные интерпретаторы (PyPy, Jython).

Пример с threading:

python
import threading

def count():
    n = 0
    for _ in range(10_000_000):
        n += 1

t1 = threading.Thread(target=count)
t2 = threading.Thread(target=count)
t1.start(); t2.start()
t1.join(); t2.join()  # Выполнится медленнее, чем последовательно

Для CPU-bound задач лучше multiprocessing:

python
from multiprocessing import Process

p1 = Process(target=count)
p2 = Process(target=count)
p1.start(); p2.start()
p1.join(); p2.join()  # Работает быстрее на многоядерных системах
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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