码迷,mamicode.com
首页 > 编程语言 > 详细

(四)多线程之 Thread 对象的其他属性或方法

时间:2020-07-27 23:42:38      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:spl   子线程   started   color   put   tran   list   thread   man   

一、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
"""

 

 

 

 

 

(四)多线程之 Thread 对象的其他属性或方法

标签:spl   子线程   started   color   put   tran   list   thread   man   

原文地址:https://www.cnblogs.com/zoling7/p/13387074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!