Sobes.tech
Back to questions
Junior — Middle
50

Какие методы используются для управления и координации потоков в Python?

Answer from AI

sobes.tech AI

В Python для управления и координации потоков используются следующие методы и инструменты из модуля threading:

  • Создание и запуск потоков:

    import threading
    
    def worker():
        print("Поток работает")
    
    t = threading.Thread(target=worker)
    t.start()
    t.join()  # Ожидание завершения потока
    
  • Синхронизация потоков:

    • Lock — простой мьютекс для предотвращения одновременного доступа к ресурсу.
    • RLock — рекурсивный замок, позволяющий одному потоку захватывать блокировку несколько раз.
    • Event — для уведомления потоков о наступлении события.
    • Condition — для более сложной синхронизации с ожиданием и уведомлением.
    • Semaphore — ограничивает количество потоков, одновременно выполняющих определённый участок кода.
  • Пример использования Lock:

    lock = threading.Lock()
    
    def safe_increment(counter):
        with lock:
            counter[0] += 1
    
  • Координация с помощью Event:

    event = threading.Event()
    
    def wait_for_event():
        event.wait()  # Ожидание сигнала
        print("Событие произошло")
    
    def trigger_event():
        event.set()  # Посылает сигнал
    

Эти методы позволяют создавать многопоточные приложения с контролем доступа к общим ресурсам и координацией работы потоков.