多线程、多进程:
对于IO密集任务,使用多线程可以提高性能
对于IO密集任务,使用多进程也可以提高性能,但是开销往往比使用多线程要高
Python GIL意味着在Python程序的任意给定时间内只能执行单线程
对于计算密集(CPU bound)任务,使用多线程实际会降低性能 / 使用多进程可以提高性能
区别: 多线程可以共享全局变量,多进程不能
多线程中,所有子线程的进程号相同,多进程中,不同的子进程进程号不同
线程共享内存空间;进程的内存是独立的
同一个进程的线程之间可以直接交流;两个进程想通信,必须通过一个中间代理来实现
创建新线程很简单; 创建新进程需要对其父进程进行一次克隆
一个线程可以控制和操作同一进程里的其他线程;但是进程只能操作子进程
协程,又称微线程,纤程:
最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。
第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。
