2026. szeptember 13., vasárnap

Multithreading bizonyítása pythonban


A programban két külön szálat indítunk el, amelyek párhuzamosan futnak, és "versenyeznek" egymással. A time.sleep segítségével szimuláljuk, hogy a szálak éppen valamilyen feladatot (például adatbázis-lekérdezést vagy fájlletöltést) végeznek.
--------------
import threading
import time
import random

# A függvény, amit a szálak párhuzamosan fognak futtatni
def munkas_szal(nev):
    print(f"🚀 Szál elindult: {nev}")
    
    for i in range(1, 4):
        # Véletlenszerű várakozás, hogy látszódjon a szálak közötti váltás
        idopont = random.uniform(0.5, 1.5)
        time.sleep(idopont)
        print(f"🔄 {nev} éppen a(z) {i}. részfeladatot végzi... ({idopont:.2f} mp)")
        
    print(f"✅ Szál befejeződött: {nev}")

# Főprogram
if __name__ == "__main__":
    print("--- FŐPROGRAM START ---")

    # 1. Szálak létrehozása (megadjuk a függvényt és az argumentumokat)
    szal1 = threading.Thread(target=munkas_szal, args=("A-Szál",))
    szal2 = threading.Thread(target=munkas_szal, args=("B-Szál",))

    # 2. Szálak elindítása (itt válnak ketté a végrehajtási utak)
    szal1.start()
    szal2.start()

    print("📢 A főprogram elindította a szálakat, és vár rájuk...")

    # 3. Bevárjuk, hogy mindkét szál befejezze a munkát (join)
    szal1.join()
    szal2.join()

    print("--- FŐPROGRAM VÉGE (Minden szál lefutott) ---")

--------------
--- FŐPROGRAM START ---
🚀 Szál elindult: A-Szál
🚀 Szál elindult: B-Szál
📢 A főprogram elindította a szálakat, és vár rájuk...
🔄 A-Szál éppen a(z) 1. részfeladatot végzi... (0.59 mp)
🔄 B-Szál éppen a(z) 1. részfeladatot végzi... (0.74 mp)
🔄 A-Szál éppen a(z) 2. részfeladatot végzi... (0.66 mp)
🔄 B-Szál éppen a(z) 2. részfeladatot végzi... (1.17 mp)
🔄 A-Szál éppen a(z) 3. részfeladatot végzi... (1.35 mp)
✅ Szál befejeződött: A-Szál
🔄 B-Szál éppen a(z) 3. részfeladatot végzi... (0.90 mp)
✅ Szál befejeződött: B-Szál
--- FŐPROGRAM VÉGE (Minden szál lefutott) ---

Nincsenek megjegyzések:

Megjegyzés küldése