Thread

  • start() – käivitab lõime. Uues lõimed käivitatakse run() meetod target-argumendina antud funktsioonile. Väljakutsutav 1 kord ühele lõimele.

  • join(timeout=None) – sunnib lõimel töö lõpetada/ühendab lõimed. "Jätab vahele" CPU-ligipääsust, kuni teised lõimed oma töö lõpetavad või seatud ajapiirang möödub. Ajapiirangu aegudes saab kontrollida is_alive() meetodiga, mis lõimed jäid ellu.

../_images/join.png
  • name – lõime nimi. Algne antakse konstruktoris, kuid saab ise identifitseerimise eesmärgil muuta.

  • is_alive() – kas lõim töötab.

  • daemon – kas lõim on pandud taustal jooksma. Peab määrama enne start() meetodit. Programm lõppeb ka, kui aktiivsed on ainult daemonlõimed.

Programm lõppeb ka siis, kui vaid daemonlõim elus:

import threading
import time

def worker():
    print(f"Wakes up")
    time.sleep(2)
    print(f"[{threading.current_thread().name}] Goes to bed\n")

daemon_thread = threading.Thread(target=worker, name="DaemonWorker")
daemon_thread.daemon = True  # BEFORE start()
daemon_thread.start()

normal_thread = threading.Thread(target=worker, name="NormalWorker")
normal_thread.start()

print(f"Daemon named {daemon_thread.name} with id {daemon_thread.ident} and aliveness is {daemon_thread.is_alive()}\n")
print(f"Thread named {normal_thread.name} with id {normal_thread.ident} and aliveness is {normal_thread.is_alive()}\n")

# We wait only normal threads
normal_thread.join()

Meetodid

  • threading.active_count(): aktiivsete lõimede koguarv.

  • threading.enumerate(): kõigi aktiivsete lõimede objektid ning ka aktiivse või lõpetatud põhilõime objekt.

  • threading.main_thread(): põhilõime objekt. Üldjuhul selle lõimega käivitatakse Pythoni interpreteerija.

../_images/process_main_thread.png
  • threading.current_thread(): hetkel jooksva lõime objekt. Kasulik logimiseks.

  • threading.get_ident(): lõime unikaalne identifikaator. Sellega on hea luua lõime-spetsiifilisi andmestruktuure, nt sõnastikus kasutada.