线程概述

线程介绍

在Python中,想要实现多任务可以使用线程来完成,线程是实现多任务的一种方式。还可以使用进程、协程实现多任务。

线程概念

进程是分配资源的基本单位, 一旦创建一个进程就会分配一定的资源,
线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。

线程作用

多线程可以完成多任务

多线程效果图:
多任务开发-线程 - 图1

线程编程

Python默认单任务

接下来我们使用python代码来模拟“唱歌跳舞”这件事情

  1. import time
  2. def sing():
  3. """唱歌函数"""
  4. for i in range(3):
  5. print("正在唱歌..")
  6. time.sleep(0.5)
  7. def dance():
  8. """跳舞函数"""
  9. for i in range(3):
  10. print("正在跳舞..")
  11. time.sleep(0.5)
  12. if __name__ == '__main__':
  13. sing() # 正在唱歌
  14. dance() # 正在跳舞

运行结果如下:
多任务开发-线程 - 图2 :::warning

  • 很显然刚刚的程序并没有完成唱歌和跳舞同时进行的要求 :::

多线程完成多任务

  1. import threading
  2. import time
  3. # 唱歌任务
  4. def sing():
  5. # 扩展: 获取当前线程
  6. # print("sing当前执行的线程为:", threading.current_thread())
  7. for i in range(3):
  8. print("正在唱歌...%d" % i)
  9. time.sleep(1)
  10. # 跳舞任务
  11. def dance():
  12. # 扩展: 获取当前线程
  13. # print("dance当前执行的线程为:", threading.current_thread())
  14. for i in range(3):
  15. print("正在跳舞...%d" % i)
  16. time.sleep(1)
  17. if __name__ == '__main__':
  18. # 扩展: 获取当前线程
  19. # print("当前执行的线程为:", threading.current_thread())
  20. # 创建唱歌的线程
  21. # target: 线程执行的函数名
  22. sing_thread = threading.Thread(target=sing)
  23. # 创建跳舞的线程
  24. dance_thread = threading.Thread(target=dance)
  25. # 开启线程
  26. sing_thread.start()
  27. dance_thread.start()

执行结果:

  1. 正在唱歌...0
  2. 正在跳舞...0
  3. 正在唱歌...1
  4. 正在跳舞...1
  5. 正在唱歌...2
  6. 正在跳舞...2

小结

  1. 导入线程模块 import threading
  2. 创建子线程并指定执行的任务sub_thread = threading.Thread(target=任务名)
  3. 启动线程执行任务sub_thread.start()