线程概述
线程介绍
在Python中,想要实现多任务可以使用线程来完成,线程是实现多任务的一种方式。还可以使用进程、协程实现多任务。
线程概念
进程是分配资源的基本单位, 一旦创建一个进程就会分配一定的资源,
线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。
线程作用
多线程可以完成多任务
多线程效果图:
线程编程
Python默认单任务
接下来我们使用python代码来模拟“唱歌跳舞”这件事情
import time
def sing():
"""唱歌函数"""
for i in range(3):
print("正在唱歌..")
time.sleep(0.5)
def dance():
"""跳舞函数"""
for i in range(3):
print("正在跳舞..")
time.sleep(0.5)
if __name__ == '__main__':
sing() # 正在唱歌
dance() # 正在跳舞
运行结果如下:
:::warning
- 很显然刚刚的程序并没有完成唱歌和跳舞同时进行的要求 :::
多线程完成多任务
import threading
import time
# 唱歌任务
def sing():
# 扩展: 获取当前线程
# print("sing当前执行的线程为:", threading.current_thread())
for i in range(3):
print("正在唱歌...%d" % i)
time.sleep(1)
# 跳舞任务
def dance():
# 扩展: 获取当前线程
# print("dance当前执行的线程为:", threading.current_thread())
for i in range(3):
print("正在跳舞...%d" % i)
time.sleep(1)
if __name__ == '__main__':
# 扩展: 获取当前线程
# print("当前执行的线程为:", threading.current_thread())
# 创建唱歌的线程
# target: 线程执行的函数名
sing_thread = threading.Thread(target=sing)
# 创建跳舞的线程
dance_thread = threading.Thread(target=dance)
# 开启线程
sing_thread.start()
dance_thread.start()
执行结果:
正在唱歌...0
正在跳舞...0
正在唱歌...1
正在跳舞...1
正在唱歌...2
正在跳舞...2
小结
- 导入线程模块
import threading
- 创建子线程并指定执行的任务
sub_thread = threading.Thread(target=任务名)
- 启动线程执行任务
sub_thread.start()