1. 程式人生 > >IO密集型和計算密集型、執行緒和程序

IO密集型和計算密集型、執行緒和程序

io密集型:有阻塞的狀態,就是一直會執行CPU(中間就一個等待狀態,這個就叫做IO密集型)。例如:sleep狀態

計算密集型任務:沒有等待的狀態就是計算密集型,從上到下執行沒有等待。

在Python中沒法同時使用多個CPU,在同一時刻,多個執行緒是互相搶佔資源的,在cpython執行中加了一把鎖(GIL)。

如果任務是IO密集型的可以使用多執行緒(阻塞等待時,就是放GIL,給另一個執行緒執行的機會)

如果是計算密集型任務時,無法使用多執行緒(如果遇到CPU密集型的執行緒,一隻佔用CPU,不會被I/O阻塞)

全域性解釋鎖(GIL):就是一個互斥體,只允許一個執行緒來控制Python直譯器。

執行緒是作業系統排程的最小單元,程序是作業系統分配儲存資源的最小單位。