Ez a magasabb szintű szálkezelést megvalósÃtó modul, a Java nyelv szálkezelési képességeit utánozza. Új szál létrehozásához a Thread osztályból kell egy osztályt származtatnod, és definiálni benne egy run metódust, majd az osztályt példányosÃtsd, és a start metódussal indÃtsd el a szálak futását.
A példa használja a Lock objektumot, a globális számláló objektumon belül. Ha eltávolÃtod az acquire és a release hÃvásokat, jól látható hogy a számláló soha nem fogja elérni a 100-at.
# File: threading_szalak_letrehozasa.py import threading import time, random class Szamlalo: def __init__(self): self.lock = threading.Lock() self.value = 0 def noveld(self): self.lock.acquire() # kritikus resz self.value = value = self.value + 1 self.lock.release() return value ########################################## szamlalo_objektum = Szamlalo() class Munkavegzo(threading.Thread): def run(self): for i in range(10): szamlalo_erteke = szamlalo_objektum.noveld() # noveld a szamlalo erteket, time.sleep(random.randint(100, 1000) / 1000.0) # varunk, mintha csinalnank valamit. print self.getName(), "-- szal: ", i, "befejezodott ", szamlalo_erteke for i in range(10): Munkavegzo().start()
# File: threading_szalak_letrehozasa.out >>> Thread-10 -- szal: Thread-2 Thread-40-- szal: -- szal : befejezodott Thread-70 10-- szal: 0befejezodott 0befejezodott 2 Thread-6 befejezodott 4 -- szal: 7 0 befejezodott 6 Thread-5 -- szal: 0 befejezodott 5 Thread-3 -- szal: 0 befejezodott 3 Thread-1 -- szal: 0 befejezodott 1 Thread-8Thread-9 -- szal: 0 befejezodott 8 -- szal: 0 befejezodott 9 Thread-10 -- szal: 1 befejezodott 11 Thread-3 -- szal: 1 befejezodott 17 Thread-2 -- szal: 1 befejezodott 12 ... Thread-5 -- szal: 8 befejezodott 84 Thread-9 -- szal: 9 befejezodott 92 Thread-1 -- szal: 9 befejezodott 95 Thread-8 -- szal: 6 befejezodott 91 Thread-8 -- szal: 7 befejezodott 98 Thread-6 -- szal: 9 befejezodott 93 Thread-7 -- szal: 9 befejezodott 94 Thread-2Thread-5 -- szal: 9 befejezodott 97 -- szal: 9 befejezodott 96 Thread-8 -- szal: 8 befejezodott 99 Thread-8 -- szal: 9 befejezodott 100
You must be logged in to post a comment.