python-多任务编程-线程

2021/8/19 9:06:09

本文主要是介绍python-多任务编程-线程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

2.1多线程的概念

  • 线程是进程中执行代码的一个分支,每个执行分支(线程)要想工作执行代码需要cpu进行调度,也就是说线程是cpu调度的基本单位,每个进程至少都有一个线程,而这个线程就是我们通常说的主线程。

  • 线程是Python程序中实现多任务的另外一种方式,线程的执行需要cpu调度来完成。

2.2多线程的使用

  1. 导入线程模块

    • import threading

  2. 创建子线程并指定执行的任务

    • sub_thread = threading.Thread(target=任务名)

  3. 启动线程执行任务

    • sub_thread.start()

1. 导入线程模块
#导入线程模块
import threadingCopy
2. 线程类Thread参数说明
Thread([group [, target [, name [, args [, kwargs]]]]])
​
group: 线程组,目前只能使用None
target: 执行的目标任务名
args: 以元组的方式给执行任务传参
kwargs: 以字典方式给执行任务传参
name: 线程名,一般不用设置
3. 启动线程
启动线程使用start方法
  • 2.3线程执行带有参数的任务

  • 线程执行任务并传参有两种方式:

    • 元组方式传参(args) :元组方式传参一定要和参数的顺序保持一致。

    • 字典方式传参(kwargs):字典方式传参字典中的key一定要和参数名保持一致。

2.4线程的注意点介绍

  1. 线程之间执行是无序的

    • 线程之间执行是无序的,它是由cpu调度决定的 ,cpu调度哪个线程,哪个线程就先执行,没有调度的线程不能执行。

    • 进程之间执行也是无序的,它是由操作系统调度决定的,操作系统调度哪个进程,哪个进程就先执行,没有调度的进程不能执行。

  2. 主线程会等待所有的子线程执行结束再结束

    • 设置守护主线程有两种方式:

      1. threading.Thread(target=show_info, daemon=True)

      2. 线程对象.setDaemon(True)

  3. 线程之间共享全局变量

  4. 线程之间共享全局变量数据出现错误问题

    • 线程同步: 保证同一时刻只能有一个线程去操作全局变量

    • 线程等待(join)

  • 进程和线程的对比

  1. 关系对比

  2. 区别对比

  3. 优缺点对比

  4. 1. 关系对比

  1. 线程是依附在进程里面的,没有进程就没有线程。

  2. 一个进程默认提供一条线程,进程可以创建多个线程。

  3. 2. 区别对比

  1. 进程之间不共享全局变量

  2. 线程之间共享全局变量,但是要注意资源竞争的问题,解决办法: 线程同步

  3. 创建进程的资源开销要比创建线程的资源开销要大

  4. 进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位

  5. 线程不能够独立执行,必须依存在进程中

  6. 多进程开发比单进程多线程开发稳定性要强

  7. 3. 优缺点对比

  • 进程优缺点:

    • 优点:可以用多核

    • 缺点:资源开销大

  • 线程优缺点:

    • 优点:资源开销小

    • 缺点:不能使用多核



这篇关于python-多任务编程-线程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程