创建线程threading

方式1:创建threading.Thread对象
def printHello():
    while True:
        print("This is the hello threading...")
        time.sleep(1)

def printNihao():
    while True:
        print("This is the Nihao threading...")
        time.sleep(2)

if __name__ == '__main__':
    t1 = threading.Thread(target=printHello)
    t2 = threading.Thread(target=printNihao)
    t1.setDaemon(False)
    t2.setDaemon(False)
    t1.start()
    t2.start()
    print("main threading ended...")
方式2:继承threading.Thread,并重写run
import threading
import time

class CustomThread(threading.Thread):
    def __init__(self, thread_name):
        # step 1: call base __init__ function
        super(CustomThread, self).__init__(name=thread_name)
        self._tname = thread_name

    def run(self):
        # step 2: overide run function
        time.sleep(0.5)
        print("This is %s running...." % self._tname)

if __name__ == "__main__":
    t1 = CustomThread("thread 1")
    t2 = CustomThread("thread 2")
    t1.setDaemon(False)
    t2.setDaemon(False)
    t1.start()
    t2.start()
    print("This is main function")
上面两种方法本质上都是直接或者间接使用threading.Thread类

下面是threading.Thread提供的线程对象方法和属性:

start():创建线程后通过start启动线程,等待CPU调度,为run函数执行做准备;
run():线程开始执行的入口函数,函数体中会调用用户编写的target函数,或者执行被重载的run函数;
join([timeout]):阻塞挂起调用该函数的线程,直到被调用线程执行完成或超时。通常会在主线程中调用该方法,等待其他线程执行完成。
name、getName()&setName():线程名称相关的操作;
ident:整数类型的线程标识符,线程开始执行前(调用start之前)为None;
isAlive()、is_alive():start函数执行之后到run函数执行完之前都为True;
daemon、isDaemon()&setDaemon():守护线程相关;

你可能感兴趣的:(python,开发语言)