一、Thread 对象的其他属性或方法
1,介绍:
Thread实例对象的方法 # isAlive(): 返回线程是否活动的。 # getName(): 返回线程名。 # setName(): 设置线程名。 threading模块提供的一些方法: # threading.currentThread(): 返回当前的线程变量。 # threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。 # threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
2,验证:
from threading import Thread,currentThread,active_count,enumerate import time def task(): # currentThread() 实际上拿到的就是对象t 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.start() # t.setName("儿子线程1") # 改线程 # # t.join() # # print(t.getName()) # 查看线程名 # # currentThread().setName("主线程") # 改主线程名,主线程名默认是MainThread # # print(t.is_alive()) # 查看一个线程是否存活,返回布尔值 # print("主线程", currentThread().getName()) # t.join() # print(active_count()) # 拿到活跃线程的数目,2个 ,加上t.join() 就变成了1个了,因为执行完 t.join()后,t 就死了。 print(enumerate()) # 把当前活跃的线程对象拿出来 """ 子线程1 is running. [<_MainThread(MainThread, started 24620)>, <Thread(子线程1, started 26440)>] 子线程1 is done. """
3,主线程等待子线程结束:
from threading import Thread import time def sayhi(name): time.sleep(2) print('%s say hello' %name) if __name__ == '__main__': t = Thread(target=sayhi,args=('zixi',)) t.start() t.join() print('主线程') print(t.is_alive()) """ zixi say hello 主线程 False """