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


    一、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
    """
  • 相关阅读:
    Activex控件的IObjectSafety接口问题
    用delphi制作无界面的activex控件
    Delphi发布ActiveX控件 制作CAB包 数字签名相关
    Delphi创建ActiveX控件,实现安全接口及无界面代码
    Delphi 开发ActiveX控件(非ActiveForm)
    利用Delphi编写IE扩展
    解决IE9下交通银行网上银行无法输入密码的问题
    Delphi中COM自动化对象中使用事件
    Delphi不注册COM直接使用ActiveX控件并绑定事件
    C#中使用 SendMessage 向非顶端窗体发送组合键
  • 原文地址:https://www.cnblogs.com/zoling7/p/13387074.html
Copyright © 2020-2023  润新知