Python并发编程之建立多线程的几种方式(二)
人人好,并发编程
&NBsp;今天最先进入第二篇。
今天的内容会对照基础,主要是为了让新手也能无障碍地阅读,以是照样要再牢固下基础。学完了基础,你们也就能很顺畅地随着我的思绪明白以后的文章。
本文目录
学会使用函数建立多线程
学会使用类建立多线程
多线程:必学函数解说
经由总结,Python建立多线程主要有如下两种方式:
函数
类
接下来,我们就来揭开多线程的神秘面纱。
. 学会使用函数建立多线程
在Python3中,Python提供了一个内置模块 threading.Thread
,可以很利便地让我们建立多线程。
threading.Thread()
一样平常吸收两个参数:
线程函数名:要放置线程让其后台执行的函数,由我们自已界说,注重不要加
()
;线程函数的参数:线程函数名所需的参数,以元组的形式传入。若不需要参数,可以不指定。
举个例子
1import time
2from threading import Thread
3
4# 自界说线程函数。
5def main(name="Python"):
6 for i in range(2):
7 print("hello", name)
8 time.sleep(1)
9
10# 建立线程01,不指定参数
11thread_01 = Thread(target=main)
12# 启动线程01
13thread_01.start()
14
15
16# 建立线程02,指定参数,注重逗号
17thread_02 = Thread(target=main, args=("MiNG",))
18# 启动线程02
19thread_02.start()
可以看到输出
1hello Python
2hello MING
3hello Python
4hello MING
是不是超级简朴呢?别急,下面也是一样简朴。
. 学会使用类建立多线程
相对照函数而言,使用类建立线程,会对照贫苦一点。
,,www.allbetgame.us欢迎进入欧博官网(Allbet Game),欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。
首先,我们要自界说一个类,对于这个类有两点要求,
必须继续
threading.Thread
这个父类;必须覆写
run
方式。
这里的 run
方式,和我们上面线程函数
的性子是一样的,可以写我们的营业逻辑程序。在 start()
后将会挪用。
来看一下例子
为了利便对比,run
函数我复用上面的main
。
1import time
2from threading import Thread
3
4class MyThread(Thread):
5 def __init__(self, name="Python"):
6 # 注重,super().__init__() 一定要写
7 # 而且要写在最前面,否则会报错。
8 super().__init__()
9 self.name=name
10
11 def run(self):
12 for i in range(2):
13 print("hello", self.name)
14 time.sleep(1)
15
16if __name__ == '__main__':
17 # 建立线程01,不指定参数
18 thread_01 = MyThread()
19 # 建立线程02,指定参数
20 thread_02 = MyThread("MING")
21
22 thread_01.start()
23 thread_02.start()
固然效果也是一样的。
1hello Python
2hello MING
3hello Python
4hello MING
. 多线程:必学函数解说
学完了两种建立线程的方式,你一定会赞叹,咋么这么简朴,一点难度都没有。
其实不然,上面我们的线程函数
为了利便明白,都使用的最简朴的代码逻辑。而在实际使用当中,多线程运行时代,还会泛起诸多问题,只是我们现在还没体会到它的庞大而已。
不外,你也不必忧郁,在后面的章节中,我会带着人人一起来探讨一下,都有哪些难题,应该若何解决。
磨刀不误吹柴工,我们首先得来认识一下,Python给我们提供的Thread
都有哪些函数和属性,实现哪些功效。学习完这些,在后期的学习中,我们才气加倍得以应手。
经由我的总结,约莫常用的方式有如下这些:
1t=Thread(target=fuNC)
2
3# 启动子线程
4t.start()
5
6# 阻塞子线程,待子线程竣事后,再往下执行
7t.join()
8
9# 判断线程是否在执行状态,在执行返回True,否则返回False
10t.is_alive()
11t.isAlive()
12
13# 设置线程是否随主线程退出而退出,默以为False
14t.daemon = True
15t.daemon = False
16
17# 设置线程名
18t.name = "My-Thread"
好了,Python线程基础知识,我们也许都先容完了。
0
珍藏