TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #5028 857
Как воспроизводить гонки потоков Python с помощью blanket

Обычно порядок выполнения потоков выбирает ОС, поэтому редкая гонка превращает тест в лотерею. blanket оборачивает примитивы threading, а тест сам решает, какой поток продолжит работу. Пять повторов перестают быть стратегией тестирования.

В Scenario можно заставить поток B захватить блокировку раньше A, задать порядок освобождения барьера или выбрать поток, который разбудит notify(). Каждый такой вызов приостанавливается в планировщике blanket, поэтому сценарий повторяется одинаково.

Это полезно при переносе библиотек на Python без GIL, но управление порядком потоков работает на границах примитивов синхронизации. Для гонки внутри голого counter += 1 нужна дополнительная контрольная точка. blanket закрепляет известный порядок в регрессионном тесте, а не перебирает все возможные гонки.
  • 🔥 2
  • 🥰 1
More from @zen_of_python
  1. Oct 1, 2026Как не сломать pickle собственным исключением Python Если конструктор исключения принимает…
  2. Oct 1, 2026Как выстроить защиту цепочки поставок Python Эшелонированная схема защиты начинается с соб…
  3. Sep 30, 2026Пакетная обработка в Python: где strict=True не спасает запись С Python 3.12 itertools.bat…
  4. Sep 30, 2026Как отменять задачи в heapq и сохранять порядок при равных приоритетах heapq сравнивает ко…
  5. Sep 29, 2026Как битовые множества сокращают память моделей Pydantic Explicit is better than implicit,…
  6. Sep 29, 2026Как проверять плагины через контракт Pydantic и FastAPI Сервис может отвечать по нужным ад…
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 →