一、進程和線程
類比:
一個工廠,至少有一個車間,一個車間中至少有一個工人,最終是工人在工作。
一個程序,至少有一個進程,一個進程中至少有一個線程,最終是線程在工作。
進程:是計算機資源分配的最小單元(進程為線程提供資源)
線程:是計算機中可以被cpu調度的最小單元(真正在工作)
執行一個.py文件時,內部就創建一個進程(主進程),在進程中創建了一個線程(主線程),由線程逐行運行代碼。
1、普通的串行執行示例
1.2 多線程
基于多線程對上述串行示例進行優化:
一個工廠,創建一個車間,這個車間中創建3個工人,并行處理任務。
一個程序,創建一個進程,這個進程中創建3個線程,并行處理任務。
1.3 多進程
基于多進程對上述串行示例進行優化:
一個工廠,創建三個車間,每個車間一個工人(共3個),并行處理任務。
一個程序,創建三個進程,每個進程一個線程(共3個),并行處理任務。
二、常見的程序開發中,計算操作需要使用CPU多核優勢,IO操作不需要利用CPU的多核優勢
1、計算密集型,用多進程。(大量的數據計算)
2、IO密集型,用多線程。(文件讀寫、網絡數據傳輸、爬蟲)