一、在python中的一些线程相关的模块和包:
_thread threading Multiprocessing
二、threading.Thread 说明
1)作用:创建线程
2)语法
help(threading.Thread) __init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None) # 参数说明 group:进程所属组,基本不用。 target:表示调用对象,一般为函数。 args:表示调用对象的位置参数元组。 name:进程别名。 kwargs:表示调用对象的字典。 daemon:表示守护线程 # 属性说明 t.name # 线程名称 t.ident # 线程标识符,如果未启动为None t.daemon # 是否为守护线程 # 方法说明 t.getName() # 获取线程名称 t.setName('test') # 设置线程名称 t.isDaemon() # 判断是否是守护线程 t.setDaemon(True) # 设置为守护线程 t.start() # 开启守护线程,为就绪状态,默认去调用该线程run方法 t.join([timeout]):# 主进程等待t(子进程)终止(强调:是主进程处于等的状态,而t是处于运行的状态)。timeout是可选的超时时间。 t.is_alive() # 判断线程的状态
三、创建线程
方法1:直接实例化Thread from threading import Thread import time def run(a=None, b=None): time.sleep(1) print(a, b) t = Thread(target=run, args=("this is a", "thread")) # 启动一个子线程,此时线程是新建状态 print(t.getName()) # 获得线程对象名称 print(t.isAlive()) # 判断线程是否还活着,在start后,在执行完毕前调用isAlive()才会返回True t.start() # 启动线程 t.join() # 主线程等待子线程t执行结束 print('Done') 注意:这个方式任务逻辑需要新建一个函数来写。
方法2:使用继承 from threading import Thread import time class MyThread(Thread): def __init__(self, a): super().__init__() # 调用父类的构造方法 self.a = a def run(self): time.sleep(self.a) print("sleep :", self.a) t1 = MyThread(2) t2 = MyThread(4) t1.start() t2.start() t1.join() t2.join() 注意:通过继承Thread来创建进程,要把任务逻辑写在run里面