2023.12.28 Python 多进程多线程

1- 多进程:计算机分配资源的最小单位。
2- 多线程:CPU进行任务切换的最小单位。
3- 线程不能独立存在,必须存在在进程中。
4- 多进程中,多个子进程和主进程间,不会共享全局变量
5- 多线程中,多个子线程和主线程间,会共享全局变量
6- 将子线程,标记为守护线程。只有设置为守护线程的,才会在主线程运行结束后,跟着结束。否则不受任何影响

  • 并发与并行

    • 并发:在一段时间内快速交替去执行多个任务(多线程)

    • 并行:在一段时间内真正的同时一起执行多个任务(多进程)

  • 进程(Process)

    • 是操作系统进行资源分配的基本单位

    • 进程可以有一个或多个子进程

    • 最原始的父进程是由操作系统提供的

  • 线程(Thread)

    • 是CPU进行调度的基本单位

    • 线程可以有一个或多个子线程

    • 线程是由进程主动创建出来的,创建第一次创建子线程时才会出现主线程

  • 线程的资源共享问题(只存在于低版本的Python解释器比如3.6.5,3.10已解决):当多个线程同时操作同一个共享的全局变量时,可能会造成错误的结果,解决办法如下

    • 线程同步:保证同一时刻只能有一个线程去操作共享资源(全局变量)

      • 线程等待thread.join()

        • 让一个线程完全执行结束,再去执行另一个线程

        • 缺点:一个执行完再执行另一个,和单任务几乎没有区别

      • 互斥锁:

        • 多个线程去抢同一把"锁",threading.Lock()抢到锁的线程执行,没抢到锁的线程会阻塞等待。

        • 缺点:虽然保障程序执行的多任务,如果频繁的加锁、释放锁会额外增加执行的时间消耗

    • 从场景下手:不用多线程做累加count操作,只做append操作!

  • 进程线程对比

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

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

    • 创建进程的资源开销要比创建线程的资源开销要大。

    • 进程之间不共享全局变量,线程之间共享全局变量,但是在低版本的Python中要注意线程资源竞争的问题。

    • 进程稳定性高,适合计算密集型任务;线程适合IO密集型任务

    • 目前Python多线程不能利用CPU多核心优势,想利用CPU多核心的优势,Python只能采用多进程

相关推荐

  1. Python---进程---线

    2023-12-30 23:00:04       63 阅读
  2. 2023.12.28 Python 进程线

    2023-12-30 23:00:04       44 阅读
  3. python线进程内存共享方式

    2023-12-30 23:00:04       53 阅读
  4. Python 线进程用法

    2023-12-30 23:00:04       35 阅读
  5. python线

    2023-12-30 23:00:04       41 阅读
  6. python 线

    2023-12-30 23:00:04       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 23:00:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 23:00:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 23:00:04       82 阅读
  4. Python语言-面向对象

    2023-12-30 23:00:04       91 阅读

热门阅读

  1. VSCode的介绍和入门

    2023-12-30 23:00:04       54 阅读
  2. 强化学习计划

    2023-12-30 23:00:04       58 阅读
  3. Git三种方法从远程仓库拉取指定分支

    2023-12-30 23:00:04       57 阅读
  4. 2分钟快速了解Nginx

    2023-12-30 23:00:04       57 阅读
  5. LeetCode 155:最小栈

    2023-12-30 23:00:04       53 阅读
  6. 总结心得:各设计模式使用场景

    2023-12-30 23:00:04       56 阅读
  7. openssl的 openssl.cnf配置文件详解

    2023-12-30 23:00:04       40 阅读