1. 程式人生 > >Thread物件的其他屬性或方法

Thread物件的其他屬性或方法

Thread物件的其他屬性或方法

介紹

Thread例項物件的方法
  # isAlive(): 返回執行緒是否活動的。
  # getName(): 返回執行緒名。
  # setName(): 設定執行緒名。

threading模組提供的一些方法:
  # threading.currentThread(): 返回當前的執行緒變數。
  # threading.enumerate(): 返回一個包含正在執行的執行緒的list。正在執行指執行緒啟動後、結束前,不包括啟動前和終止後的執行緒。
  # threading.activeCount(): 返回正在執行的執行緒數量,與len(threading.enumerate())有相同的結果。

getName()和setName()

from threading import Thread,currentThread
import time
# 當前執行緒的物件 currentThread

def task():
    print("%s is running" % currentThread().getName())
    time.sleep(2)
    print("%s is done" % currentThread().getName())

if __name__ == "__main__":
    t = Thread(target=task, name="執行緒1")  # t=currentThread()
    t.start()
    t.setName("兒子執行緒1")   # 改執行緒名字

    # print(t.getName())
    currentThread().setName("主執行緒名稱")   # 該主執行緒名字
    print("<主執行緒>", currentThread().getName())

  執行結果

執行緒1 is running
主執行緒 主執行緒名稱
兒子執行緒1 is done

isAlive()

from threading import Thread, currentThread
import time
# 當前執行緒的物件 currentThread

def task():
    print("%s is running" % currentThread().getName())
    time.sleep(2)
    print("%s is done" % currentThread().getName())

if __name__ == "__main__":
    t = Thread(target=task, name="執行緒1")  # t=currentThread()
    t.start()

    print(t.isAlive())     # 檢視是否存

  執行結果

執行緒1 is running
True
執行緒1 is done

 

主執行緒等待子執行緒結束

from threading import Thread, currentThread
import time
# 當前執行緒的物件 currentThread

def task():
    print("%s is running" % currentThread().getName())
    time.sleep(2)
    print("%s is done" % currentThread().getName())

if __name__ == "__main__":
    t = Thread(target=task, name="執行緒1")  # t=currentThread()
    t.start()
    t.join()

    print(t.isAlive())     # 檢視是否存活

執行結果

執行緒1 is running
執行緒1 is done
False

active_count()

from threading import Thread, currentThread, active_count
import time
# 當前執行緒的物件 currentThread

def task():
    print("%s is running" % currentThread().getName())
    time.sleep(2)
    print("%s is done" % currentThread().getName())

if __name__ == "__main__":
    t = Thread(target=task, name="執行緒1")  # t=currentThread()
    t.start()

    print(active_count())  # 活躍程序數

 執行結果:

執行緒1 is running
2
執行緒1 is done

只剩下主執行緒

from threading import Thread, currentThread, active_count
import time
# 當前執行緒的物件 currentThread

def task():
    print("%s is running" % currentThread().getName())
    time.sleep(2)
    print("%s is done" % currentThread().getName())

if __name__ == "__main__":
    t = Thread(target=task, name="執行緒1")  # t=currentThread()
    t.start()
    t.join()

    print(active_count())  # 活躍程序數

執行結果:

執行緒1 is running
執行緒1 is done
1

enumerate()

from threading import Thread, currentThread, active_count, enumerate
import time
# 當前執行緒的物件 currentThread

def task():
    print("%s is running" % currentThread().getName())
    time.sleep(2)
    print("%s is done" % currentThread().getName())

if __name__ == "__main__":
    t = Thread(target=task, name="執行緒1")  # t=currentThread()
    t.start()
    # t.join()

    print(enumerate())  # 把當前活躍的執行緒物件取出

  執行結果:

執行緒1 is running
[<_MainThread(MainThread, started 10552)>, <Thread(執行緒1, started 3740)>]
執行緒1 is done