Sobes.tech
Junior — Middle
110

Python dilində semaforun məqsədi nədir və hansı hallarda istifadə edilməlidir?

Şirkətlər soruşuldu
Баланс-ПлатформаБаланс-Платформа

AI-dan cavab

sobes.tech Süni İntellekt

Семафор в Python — это механизм синхронизации из модуля threading, который ограничивает количество потоков, одновременно выполняющих определённый участок кода. Он хранит счётчик, который уменьшается при входе в критическую секцию и увеличивается при выходе.

Семафоры полезны, когда нужно контролировать доступ к ограниченному ресурсу, например, к пулу соединений или к файлам, чтобы не превысить заданное число одновременных операций.

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

import threading
import time

sem = threading.Semaphore(3)  # максимум 3 потока одновременно

def worker(num):
    with sem:
        print(f"Поток {num} вошёл")
        time.sleep(2)
        print(f"Поток {num} вышел")

threads = []
for i in range(5):
    t = threading.Thread(target=worker, args=(i,))
    t.start()
    threads.append(t)

for t in threads:
    t.join()

В этом примере одновременно могут работать только 3 потока, остальные ждут освобождения семафора.