Python公开课 - 标准库Thread详解

Thread介绍

Thread类表示在单独的控制线程中运行的活动。有两种方法可以指定活动: - 将可调用对象传递给构造函数 - 或者通过覆盖run() 子类中的方法。

换句话说,只 覆盖此类的 __init__()和run()方法。

创建线程对象后,必须通过调用线程的start()方法启动其活动。这将run() 在单独的控制线程中调用该方法。

一旦线程的活动开始,线程就被认为是“活着的”。当它的run()方法终止时,它会停止

通过is_alive()方法判断线程是否存活。

其他线程可以调用线程的join()方法。这会阻塞调用线程,直到调用其join()方法的线程终止。

线程有一个名字。名称可以通过构造函数传递,并通过name属性读取或更改。

线程可以标记为“守护程序线程”。

构造方法

Thread(group=None, target=None, name=None, args=(), kwargs={}) 

说明:

  • group: 线程组,目前还没有实现,库引用中提示必须是None;
  • target: 要执行的方法
  • name: 线程名
  • args/kwargs: 要传入方法的参数

实例方法

  • isAlive(): 返回线程是否在运行。正在运行指启动后、终止前
  • get/setName(name): 获取/设置线程名
  • start(): 线程准备就绪,等待CPU调度
  • run(): 线程运行逻辑
  • is/setDaemon(bool): 获取/设置是守护线程(在start之前设置)如果是守护线程,主线程执行过程中,守护线程也在进行,主线程执行完毕后,守护线程不论成功与否,主线程和后台线程均停止。如果是前台线程,主线程执行过程中,前台线程也在进行,主线程执行完毕后,等待前台线程也执行完成后,程序停止
  • join([timeout]): 阻塞当前上下文环境的线程,直到调用此方法的线程终止或到达指定的timeout(可选参数)

示例说明

import threading

class MyThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        pass

    def run(self):
        print('Hello World')


t = MyThread()
t.start()

相关主题: