线程是CPU使用的基本单位,它由线程ID、程序计数器、寄存器集合和栈组成。
多核编程
并发(Concurrency):指能够交替执行不同的任务,单处理器/核心,CPU调度器通过上下文切换提供并发性
并行(Parallelism):指能够同时执行不同的任务,需要多个处理器/内核
并行意味着并发,但并发并不意味着并行

并行类型

数据并行(data parallelism):不同的数据输入以并行方式运行同一个函数。将可以解决问题的数据进行分割,将分割好的数据放在一个或者多个核上进行执行,每一个核对这些数据都进行类似的操作

任务并行(task parallelism):将许多可以解决问题的任务分割,然后分布在一个或者多个核上进行程序的执行

python子线程退出主进程_操作系统


阿姆达尔定律

python子线程退出主进程_操作系统_02

S:序列部分

N:处理核心

线程
线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。
线程和进程的实现因操作系统而异

一个进程中可以存在多个线程:

  • 同时执行(并行)
  • 共享内存等资源(不同进程不共享这些资源)
  • 在任何给定时间共享其可执行代码及其变量(代码部分、数据部分、操作系统资源)的值。

线程与进程的异同
相同
1.线程(进程)共享CPU
2.只有一个线程(进程)处于活动状态(在一个CPU内核上)
3.线程(进程)中的指令按顺序执行
4.线程(进程)可以创建子线程。
5.如果一个线程(进程)被阻塞,另一个线程(进程)可以运行。

差异

进程

线程

通常是独立的

是进程的子集

单独的地址空间

相同的地址空间

通过IPC模型交互

通过共享变量进行交互

较慢的上下文切换

更快的上下文切换

可能互相帮助,也可能互不帮助

会互相帮助