並發:系統具有處理多個任務(動作)的能力
並行:系統具有同時處理多個任務(動作)的能力
同步:當進程執行到一個IO(等待外部數據)的時候,需要等待,等待即同步
異步:當進程執行到一個IO(等待外部數據)的時候,不需要等待,待數據接收成功后,再回來處理。
GIL:全局解釋鎖:無論你有多少個線程,你有多少個CPU,Python在執行的時候會淡定的在同一時刻只允許一個線程運行。(解釋器層面保護進程安全)
GIL的作用:同一時刻,只有一個線程被CPU在執行,造成單線程運行結果,多核用不到。
垃圾回收機制:解釋器的一個線程在進行垃圾回收。
CPU切換:io阻塞、cpu執行時間窗口等
線程都是競爭CPU資源來獲得執行。
任務:io密集型(io交互多,CPU空閑時間多)、計算密集型(),time.sleep()等同於io操作
對於io密集型任務,python的多線程是有意義的,而計算密集型任務,python的多線程就不適用了,可以采用多進程。
同步鎖:即將線程設置成串行,lock=threading.lock(),lock.acquire(),lock.release()