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