python-线程二(创建线程)

一、在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里面

 

上一篇:C#WinForm程序异常退出的捕获、继续执行与自动重启


下一篇:线程,Python 实现多任务的方式之一