简单总结
1.进程包含线程,线程包含协程
2.进程是操作系统资源分配的基本单位,每启动一个进程都需要向操作系统索要运行资源,一个进程有一个或多个线程
3.线程是cpu调度的基本单位,通过线程去执行进程中代码, 线程是执行代码的分支
4.线程之间共享全局变量,但是要注意资源竞争的问题,可以用互斥锁避免这种局面,不小心容易造成死锁。
进程之间不共享全局变量。进程之间如果想通信,用q(消息队列)。
进程池是你让系统自动创建多少条进程帮你完成任务,系统会用生成小于等于你设定的进程数完成你的任务。
注意:主进程(线程)都会等待子进程(线程)执行完再退出,但是主进程不会等待进程池执行完再退出,此 时要 先q.close() q.join() 来保证进程池执行完
5.协程是一个用户层面的概念,不同协程的模型实现可能是单线程,也可能是多线程
6.协程的本质就是使用当前进程在不同的函数代码中切换执行,可以理解为并行
7.多进程、多线程根据cpu核数不一样,可能是并行的 也可能是并发的
8.多进程开发稳定性强,但是资源开销大
9.线程切换需要的资源一般,效率一般,协程切换任务资源很小,效率高.
10.多进程开发某个进程死了不会影响其它进程的运行,但是多线程开发该进程死了那么这些线程都要进行销毁
11.多线程开发线程之间执行是无序的,协程之间执行按照一定顺序交替执行
1.进程包含线程,线程包含协程
2.进程是操作系统资源分配的基本单位,每启动一个进程都需要向操作系统索要运行资源,一个进程有一个或多个线程
3.线程是cpu调度的基本单位,通过线程去执行进程中代码, 线程是执行代码的分支
4.线程之间共享全局变量,但是要注意资源竞争的问题,可以用互斥锁避免这种局面,不小心容易造成死锁。
进程之间不共享全局变量。进程之间如果想通信,用q(消息队列)。
进程池是你让系统自动创建多少条进程帮你完成任务,系统会用生成小于等于你设定的进程数完成你的任务。
注意:主进程(线程)都会等待子进程(线程)执行完再退出,但是主进程不会等待进程池执行完再退出,此 时要 先q.close() q.join() 来保证进程池执行完
5.协程是一个用户层面的概念,不同协程的模型实现可能是单线程,也可能是多线程
6.协程的本质就是使用当前进程在不同的函数代码中切换执行,可以理解为并行
7.多进程、多线程根据cpu核数不一样,可能是并行的 也可能是并发的
8.多进程开发稳定性强,但是资源开销大
9.线程切换需要的资源一般,效率一般,协程切换任务资源很小,效率高.
10.多进程开发某个进程死了不会影响其它进程的运行,但是多线程开发该进程死了那么这些线程都要进行销毁
11.多线程开发线程之间执行是无序的,协程之间执行按照一定顺序交替执行