1. 用函数创建多线程
在Python3中,Python提供了一个内置模块 threading.Thread,可以很方便地让我们创建多线程。
threading.Thread() 一般接收两个参数:
线程函数名:要放置线程让其后台执行的函数,由我们自已定义,注意不要加();
线程函数的参数:线程函数名所需的参数,以元组的形式传入。若不需要参数,可以不指定。
举个例子
import time
from threading import Thread
# 自定义线程函数。
def target(name="Python"):
for i in range(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()
可以看到输出
hello Python
hello MING
hello Python
hello MING
2. 用类创建多线程
相比较函数而言,使用类创建线程,会比较麻烦一点。
首先,我们要自定义一个类,对于这个类有两点要求,
必须继承 threading.Thread 这个父类;
必须复写 run 方法。
这里的 run 方法,和我们上面线程函数的性质是一样的,可以写我们的业务逻辑程序。在 start() 后将会调用。
来看一下例子 为了方便对比,run函数我复用上面的main。
import time
from threading import Thread
class MyThread(Thread):
def __init__(self, type="Python"):
# 注意:super().__init__() 必须写
# 且最好写在第一行
super().__init__()
self.type=type
def run(self):
for i in range(2):
print("hello", self.type)
time.sleep(1)
if __name__ == '__main__':
# 创建线程01,不指定参数
thread_01 = MyThread()
# 创建线程02,指定参数
thread_02 = MyThread("MING")
thread_01.start()
thread_02.start()
当然结果也是一样的。
hello Python
hello MING
hello Python
hello MING
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"
审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
多线程
+关注
关注
0文章
279浏览量
21133 -
python
+关注
关注
58文章
4889浏览量
90330
发布评论请先 登录
相关推荐
热点推荐
【瑞萨RA × Zephyr评测】多线程和看门狗
本文章旨在评估使用 Zephyr RTOS 在 Renesas FPB-RA6E2 开发板上实现多线程调度与硬件看门狗功能的应用。评估内容包括任务调度、看门狗初始化流程、主程序逻辑的详细解析,以及实验现象与数据分析。
解析Linux的进程、线程和协程
系统的稳定性和安全性。
(3)创建与销毁:Linux使用fork()系统调用来创建新进程,通过exit()来终止进程。
线程(Thread)
线程是进程内的执行单元,多个
发表于 12-22 11:00
Linux多线程对比单线程的优势
:「资源利用率」:通过多线程,可以更有效地利用CPU资源,特别是多核CPU。「并行处理」:线程允许同时执行多个任务,提高程序的执行效率。「简化设计」:使用线程可以简化程序设计,因为线程
发表于 12-01 06:11
用PLC实现卷径计算的两种算法
卷径计算,是动态计算如钢卷,纸卷等存料量的一种方法,它是实现张力控制和自动充放料、以及甩尾控制的重要前提。卷径计算目前主流的方法有两种,一种是根据机列速度(产线速度)和和被测卷的转动角速度求得;另一种是根据被测卷的转动圈数和测长
rt-thread studio 如何进行多线程编译?
,使用的是5800h+32g内存+sn550 ssd,开启16线程编译时cpu的占用率也只能到30%,编译完整个工程需要3分钟
感觉多线程编译设置没有生效,有办法提高编译速度吗
rtthread studio版本是 2.2.9
发表于 10-11 09:16
RT-Thread Nano移植后动态创建线程创建不了怎么解决?
RT-Thread Nano 移植后动态创建线程创建不了,静态可以.直接烧录DEMO也一样,将RT_USING_HEAP开起来,使用动态创建就创建
发表于 09-19 06:28
rtth studio中nano 如何创建动态线程?
有没有大佬,可以说一下为什么静态线程可以正常使用,动态线程怎么也使用不了。 具体需要什么配置才能使用动态线程创建。谢谢!
发表于 09-11 06:01
【HZ-T536开发板免费体验】—— linux创建线程
的执行任务成为单线程。多线程是程序中包含多个执行流,在一个程序中可以同时运行多个不同的线程来执行不同的任务。
多线程提高了CPU的使用卤率。多线程
发表于 09-01 21:31
rtt studio中nano 如何创建动态线程?
有没有大佬,可以说一下为什么静态线程可以正常使用,动态线程怎么也使用不了。 具体需要什么配置才能使用动态线程创建。谢谢!
发表于 08-22 06:19
如何移植 RT-Thread Nano 并创建 2 个线程?
基于 BSP 中的 GPIO_OutputInput 演示,展示了如何移植 RT-Thread Nano 并创建 2 个线程。
发表于 08-19 07:45
多线程的安全注意事项
多线程安全是指多个线程同时访问或修改共享资源时,能够保证程序的正确性和可靠性。
开发者选择TaskPool或Worker进行多线程开发时,在TaskPool和Worker的工作线程中导
发表于 06-20 07:49
RT-Thread Nano移植后动态创建线程创建不了怎么处理?
RT-Thread Nano移植后动态创建线程创建不了,静态可以.直接烧录DEMO也一样,将RT_USING_HEAP开起来,使用动态创建就创建
发表于 06-11 06:36
六相永磁同步电机串联系统控制的两种方法分析研究
/simulink环境下,分别用这两种方法对两台电机串联系统的运行特性进行仿真研究。当其中一台电机转速、负载变化时,分析两种方法下另外一台电机独立运行的情况,脸证分析这两种方法的可行性
发表于 06-10 13:09
python创建多线程的两种方法
评论