1.多任务的执行方式
在 Python 中,多任务可以通过并发和并行两种方式来实现,
并发(Concurrency):
定义:并发是指在同一时间段内,处理多个任务的能力。在并发执行的情况下,多个任务会交替执行,看上去像是同时进行,但实际上在任何一个时刻,处理器都只在处理一个任务。这就好像一个人在同一时间内要处理多个事情,比如一边看电视一边吃饭一边听音乐,通过快速地在这些事情之间切换注意力,给人一种同时在做几件事的感觉。
并行(Parallelism):
- 定义:并行是指在同一时刻,真正地同时处理多个任务。这需要有多个处理器或多核处理器,每个任务可以在不同的处理器或核心上同时运行。就像有多个工人同时在不同的地方工作,各自做着不同的任务,互不干扰,同时进行。
2.进程
在 Python 中,进程默认情况下是不共享全局变量的。:
原理
每个进程都有自己独立的地址空间,这意味着它们各自有一套独立的变量副本。相当于子进程是主进程的拷贝。当一个进程对全局变量进行修改时,这种修改只在该进程内部可见,不会影响到其他进程中的同名变量。操作系统会负责为每个进程分配和管理独立的内存空间,以确保进程之间的独立性和稳定性,避免一个进程的数据被其他进程意外修改,从而提高系统的可靠性和安全性。
3.线程
线程之间共享同一个全局变量因此会存在资源竞争问题:
解决方法可以使用互斥锁来解决
进程和线程对比:(1)线程依附于进程,一个进程默认是一个线程但也可以多个线程,这时因为一个进程对应一个cpu,所以这些线程是并发执行的(排队执行)(2)进程不共享全局变量,线程共享全局变量(3)进程资源开销大,线程小,进程是资源分配的基本单位,线程是cpu调度基本单位
优缺点:进程可以多核,但资源开销大;线程相反