当前位置: 首页 > 图灵资讯 > 行业资讯> python中实现多线程有几种方式?

python中实现多线程有几种方式?

来源:图灵python
时间: 2024-12-11 14:34:30

我们都知道,代码编程不是固定的东西,而是非常灵活的内容,根据不同的内容,我们可以拓展出很多条内容,最终目的还是为了可以实现结果,给大家举例说明其中一个最常用的多线程吧~以及实现的几种方式。

1. 用函数创建多线程

Python3中,Python提供了一个内置模块 threading.Thread,可以很方便地让我们创建多线程。

举个例子

importtime
fromthreadingimportThread

#自定义线程函数。
deftarget(name="Python"):
foriinrange(2):
print("hello",name)
time.sleep(1)

#创建线程01,不指定参数
thread_01=Thread(target=target)
#启动线程01
thread_01.start()


#创建线程02,指定参数,注意逗号
thread_02=Thread(target=target,args=("MING",))
#启动线程02
thread_02.start()

可以看到输出

helloPython
helloMING
helloPython
helloMING

2.用类创建多线程

相比较函数而言,使用类创建线程,会比较麻烦一点。

首先,我们要自定义一个类,对于这个类有两点要求,

l必须继承 threading.Thread 这个父类;

l必须复写 run 方法。

来看一下例子为了方便对比,run函数我复用上面的main。

importtime
fromthreadingimportThread

classMyThread(Thread):
def__init__(self,type="Python"):
#注意:super().__init__()必须写
#且最好写在第一行
super().__init__()
self.type=type

defrun(self):
foriinrange(2):
print("hello",self.type)
time.sleep(1)

if__name__=='__main__':
#创建线程01,不指定参数
thread_01=MyT
hread()
#创建线程02,指定参数
thread_02=MyThread("MING")

thread_01.start()
thread_02.start()

当然结果也是一样的。

helloPython
helloMING
helloPython
helloMING

3.线程对象的方法

上面介绍了当前 Python 中创建线程两种主要方法。

#如上所述,创建一个线程
t=Thread(target=func)

#启动子线程
t.start()

#阻塞子线程,待子线程结束后,再往下执行
t.join()

#判断线程是否在执行状态,在执行返回True,否则返回False
t.is_alive()
t.isAlive()

#设置线程是否随主线程退出而退出,默认为False
t.daemon=True
t.daemon=False

#设置线程名
t.name="My-Thread"

至此,Python线程基础知识,我们大概都介绍完了。感兴趣的小伙伴可以多浏览看下内容哦~如果还想知道更多的python知识,可以到python学习网进行查询。