Sobes.tech
Back to questions
Junior
60

Какие знаешь способы решения проблемы многопоточности

Answer from AI

sobes.tech AI

Способы решения проблемы многопоточности в Python:

  • Использование потоков с блокировками (Lock, RLock) для предотвращения состояния гонки при доступе к общим ресурсам.
  • Модуль queue для безопасного обмена данными между потоками.
  • Использование concurrent.futures.ThreadPoolExecutor для удобного управления пулом потоков.
  • Использование процессов (multiprocessing) для обхода GIL и выполнения кода параллельно.
  • Асинхронное программирование (asyncio) для эффективного управления задачами без блокировок.

Пример с использованием Lock:

import threading

counter = 0
lock = threading.Lock()

def increment():
    global counter
    with lock:
        temp = counter
        temp += 1
        counter = temp

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

print(counter)  # Ожидается 1000