Sobes.tech
Back to questions
Junior — Middle
50

Объясните, что такое условие гонки данных в приложениях на Python и почему оно опасно?

Companies where asked
Код Открытия

Answer from AI

sobes.tech AI

Условие гонки данных (race condition) в Python возникает, когда несколько потоков одновременно обращаются и изменяют общий ресурс без должной синхронизации. Это приводит к непредсказуемому поведению программы и ошибкам.

Почему это опасно:

  • Результат выполнения программы становится нестабильным и зависит от порядка выполнения потоков.
  • Могут возникать трудноуловимые баги, которые сложно воспроизвести.
  • Нарушается целостность данных, что может привести к повреждению состояния программы.

Пример:

import threading

counter = 0

def increment():
    global counter
    for _ in range(100000):
        counter += 1  # неатомарная операция

threads = [threading.Thread(target=increment) for _ in range(2)]
for t in threads:
    t.start()
for t in threads:
    t.join()

print(counter)  # ожидается 200000, но может быть меньше из-за гонки

Чтобы избежать гонок, используют блокировки (threading.Lock) или другие механизмы синхронизации.