TGViewer
Разъяснивший Python Разъяснивший Python @python_pssss · 6.97K subscribers
Post #4811 262
GIL в threading — это боль, которую многие просто принимают как данность

До Python 3.13 альтернатив не было: multiprocessing с оверхедом и морокой передачи данных, или asyncio, бесполезный при CPU-bound задачах. Реальные кейсы — обработка данных, парсинг, криптография — где threading кажется логичным, но GIL заставляет ядра простаивать, а однопоточный код обгоняет многопоточный.

Кейс из продакшна: пул потоков без прироста

Я написал пул потоков для обработки пакетов данных: каждый поток выполнял CPU-bound трансформацию. GIL не отпускался, прирост 0%. Переписал на multiprocessing — 3x, но память выросла в 4 раза. Типичная ошибка: думать, что threading даст параллелизм для чистых вычислений.

Free-threaded Python 3.13: сборка без GIL

В 3.13 появился флаг --disable-gil. Потоки наконец работают параллельно. На четырех ядрах прирост по CPU-bound задачам — 3-4x. Пример теста:

# threading с GIL (стандартная сборка)
import threading, time

def work():
for _ in range(10**7):
x = 1 + 1

threads = [threading.Thread(target=work) for _ in range(4)]
start = time.time()
for t in threads: t.start()
for t in threads: t.join()
print(f"С GIL: {time.time() - start:.2f}s")
# Вывод: ~2.5s (почти как последовательно)


# free-threaded (сборка без GIL)
# Тот же код — результат ~0.8s (на 4 ядрах)


Разъяснивший Python
More from @python_pssss
  1. Sep 21, 2026Настраиваемый логгер-декоратор Начнем с примера использования. Так мы не перегружаем внима…
  2. Sep 21, 2026Замена переменных на месте Этот аккуратный трюк поможет сэкономить несколько строк кода. Р…
  3. Sep 20, 2026List Comprehensions List comprehension может заменить неэстетичные циклы, используемые для…
  4. Sep 20, 2026Data classes Начиная с версии 3.7, Python поставляется с классами данных. У них есть неско…
  5. Sep 19, 2026Спортивное программирование: что это, зачем и какие задачи приходится решать Это не програ…
  6. Sep 19, 2026Многоточие в Python Многоточие Python – это последовательность из трех точек, часто исполь…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →