进程和线程之间的区别
进程 | 线程 | |
---|---|---|
定义 | 资源单位(房子) | 执行单位(代码) |
优点 | 多核CPU密集型节省时间 | 节省资源、速度快、多个线程、IO密集型节省资源 |
缺点 | 浪费资源,创建耗费时间长 | 同一进程下多线程无法执行,无法利用多核优势(目的:GIL控制python解释器内存管理) |
数据相关 | 进程之间数据相互隔离,可以通过队列模块和IPC机制(借助队列实现通信) | 线程之间数据相互共享 |
空间 | 进程有独立的内存空间 | 线程依托于进程,没有独立的内存空间,同一进程的线程共享本进程的地址空间。 |
执行过程 | 每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口 | 不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制 |
开启方式 | 开启进程必须在main下面执行代码 | 开启线程不需要在main下面执行代码 直接书写就可以 但是我们还是习惯性的将启动命令写在main下面 |
开启时间 | 进程需要创建申请空间开销大,速度教慢 | 创建线程的开销非常小 几乎是代码一执行线程就已经创建了 |