IO密集型和计算密集型、线程和进程

io密集型:有阻塞的状态,就是一直会执行CPU(中间就一个等待状态,这个就叫做IO密集型)。例如:sleep状态

计算密集型任务:没有等待的状态就是计算密集型,从上到下执行没有等待。

在Python中没法同时使用多个CPU,在同一时刻,多个线程是互相抢占资源的,在cpython运行中加了一把锁(GIL)。

如果任务是IO密集型的可以使用多线程(阻塞等待时,就是放GIL,给另一个线程执行的机会)

如果是计算密集型任务时,无法使用多线程(如果遇到CPU密集型的线程,一只占用CPU,不会被I/O阻塞)

全局解释锁(GIL):就是一个互斥体,只允许一个线程来控制Python解释器。

线程是操作系统调度的最小单元,进程是操作系统分配存储资源的最小单位。

猜你喜欢

转载自www.cnblogs.com/jacky912/p/10254332.html