这篇文章将为大家详细讲解有关python线程如何创建和传参,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一.线程解释
线程是cpu最小调度单位,一个程序中至少有一个或者多个线程(至于进程暂时不做讲解,后面文章会有详细解释)!在开发中使用线程可以让程序运行效率更高,多线程类似于同时执行多个不同代码块。
二.线程创建和启动
1.导入线程模块
1
2
2.创建线程并初始化线程
调用threading模块中的缺省函数Thread,创建并初始化线程,返回线程句柄。如果对缺省函数已经忘记的小伙伴请回到 python函数的声明和定义中关于缺省参数部分复习一下。
1
2
函数名
3.启动线程
通过初始化返回的线程句柄调用start()函数,启动线程,此时会自动执行在创建线程时target对应的函数内部的代码:
1
2
综合上面三点,下面使用代码对python线程thread做详细讲解:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
输出结果:
1
2
3
4
洗衣服开始
打扫房间开始
洗衣服完成
打扫房间完成
运行程序可以发现程序从运行开始到结束,一共耗时5秒时间!注意观察输出日志:
一:洗衣服开始和打扫房间开始几乎同时开始,两个事件同时执行.
二:程序停止5秒;
三:洗衣服和打扫房间几乎同时完成
当然你也可以按照以前的学习的内容,先调用wash_clothes函数,在调用clean_room函数,同样能输出内容,而耗时却是10秒左右,示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
输出结果:
1
2
3
4
洗衣服开始
洗衣服完成
打扫房间开始
打扫房间完成
运行程序可以发现程序从运行开始到结束,一共耗时10秒时间!注意观察输出日志:
一:洗衣服开始;
二:程序停止了5秒;
三:洗衣服完成,打扫房间开始
四:程序停止5秒;
五:打扫房间结束,程序结束;
由此可见:多线程可以同时运行多个任务,效率远比单线程更高!
三.线程传参
在上面的demo中,我们并没有为线程传递参数,如果在线程中需要传递参数怎么办呢?
threading.Thread()函数中有两个缺省参数 args 和 kwargs ,args 是元组类型,kwargs 是字典类型,缺省值默认为空,除此之外,其实还可以设置线程的名字等,其函数声明如下:
(ps:如果对缺省函数已经忘记的小伙伴请回到 python函数的声明和定义中关于缺省参数部分复习一下)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
示例代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25