Glavni problem s nitima je taj što mogu stvoriti mnogo sukoba za resurse, kao što su CPU vrijeme i memorija. To može dovesti do problema ako dvije niti pokušaju pristupiti istom resursu u isto vrijeme.ing_simple.py
#!/usr/bin/python import threading import time # Definirajte funkciju za nit def print_time( threadName, delay): count = 0 while count < 5: time.sleep(delay) count += 1 print "%s: %s" % ( threadName, time.ctime(time.time()) ) # Kreirajte dvije niti na sljedeći način pokušajte: thread.start_new_thread( print_time, ("Thread-1", 2, ) ) thread.start_new_thread( print_time, ( "Thread-2", 4, ) ) osim: print "Error: unable to start thread" while 1: pass[/code] Ovaj kod stvara dvije niti. Prva nit će pokrenuti funkciju "print_time" svake 2 sekunde, a druga nit će pokrenuti funkciju "print_time" svake 4 sekunde.
Threading objekti
U Pythonu, možete niti objekte pomoću modula za niti. Ovaj modul pruža niz funkcija koje možete koristiti za stvaranje i upravljanje nitima u vašem kodu.
Za pokretanje nove niti u Pythonu, možete koristiti funkciju threading.Thread(). Ova funkcija kao svoj jedini argument uzima funkcijski objekt koji želite pokrenuti kao nit. Funkcijski objekt mora imati atribut __name__, koji navodi naziv niti na kojoj će se ova funkcija izvoditi.
Nakon što stvorite nit pomoću funkcije Thread(), možete je pokrenuti pozivom metode Threading.start(). Ova metoda uzima kao svoj jedini argument niz koji specificira naziv programske datoteke gdje bi se nova nit trebala početi izvršavati.
Također možete koristiti metodu Threading.join() za prekid pokrenute niti i vraćanje kontrole natrag u vašu glavnu programsku petlju. Ova metoda kao svoj jedini argument uzima string koji specificira naziv programske datoteke gdje bi nova nit trebala prekinuti izvođenje.
Daemon Threads
Daemon niti su niti koje se izvode u pozadini programa. Koriste se za rukovanje dugotrajnim zadacima ili uslugama bez ometanja normalnog tijeka izvršenja.