Riješeno: primjer semafora u Pythonu

Posljednje ažuriranje: 09/11/2023

Glavni problem sa primjerom semafora u Pythonu je taj što nije vrlo efikasan.

import threading 
import time 
  
# A Semaphore is a synchronization object used  
# to control access to a resource. 
  
# Create a semaphore with initial value 0 
sem = threading.Semaphore(0) 
  
# Try to acquire the semaphore 
# This will block until semaphore's value is non-zero  
sem.acquire()

# Otpustite semafor
# Povećanje vrijednosti semafora za 1
sem.release()
import threading – ova linija uvozi modul za obradu niti koji vam omogućava da kreirate niti kao objekte.
import time – ova linija uvozi vremenski modul koji vam omogućava da koristite funkcije vezane za vrijeme.
sem = threading.Semaphore(0) – ova linija kreira Semaphore objekat sa početnom vrednošću 0. Semafor je objekat za sinhronizaciju koji se koristi za kontrolu pristupa resursu.
sem.acquire() – ova linija pokušava da preuzme semafor, što znači da će blokirati sve dok vrijednost semafora ne bude nula (što znači da je dostupan).
sem.release() – ova linija oslobađa semafor, što znači da povećava vrijednost semafora za 1 (čini ga ponovo dostupnim).

Semafor

Semafor je Python biblioteka za upravljanje resursima kao što su niti i datoteke. Pruža jednostavan interfejs za kreiranje i upravljanje resursima, kao i niz API-ja za kontrolu tih resursa. Semafor se može koristiti za kreiranje i upravljanje nitima, procesima, datotekama ili bilo kojom drugom vrstom resursa.

Kako napraviti semafor

Semafor je struktura podataka koja se koristi za kontrolu broja istovremenih operacija na resursu. U Pythonu semafori su implementirani kao objekti koji se mogu kreirati pomoću modula semafora. Da biste koristili semafor, prvo kreirate instancu klase semafora, a zatim postavite njenu vrijednost pomoću metode set(). Zatim možete koristiti metodu get() da dohvatite trenutnu vrijednost semafora.

Da biste kreirali semafor, prvo morate uvesti modul semafora:

import semafor

Zatim morate kreirati instancu klase semafora:

sem = semafor.Semafor()

Zatim možete postaviti vrijednost semafora pomoću metode set():

sem.set(1)

Zatim, možete koristiti metodu get() da dohvatite trenutnu vrijednost semafora:

Slični postovi: