一、 程序,進程,線程
- 程序:由源代碼生成的可執行應用。(例如:QQ,淘寶等)
- 進程:一個正在運行的程序可以看做一個進程,進程擁有獨立運行所需要的全部資源。(例如:打開QQ相當於開啟一個進程)
- 線程:程序中獨立運行的代碼段。(例如:在QQ這個進程中,傳輸文字是一個線程,傳輸語音是一個線程,彈出對話框是一個線程。)
一個程序至少擁有一個進程,一個進程至少擁有一個線程。進程負責資源的調度和分配,線程才是程序真正的執行單元,負責代碼的執行。
二、單線程

原理:
每個正在運行的程序(即進程),至少包含一個線程,這個線程叫做主線程,
主線程在程序啟動時被創建,用於執行main函數,只有一個主線程的程序叫做單線
程程序,主線程負責執行程序的所有代碼。這些代碼只能順序執行,無法並發執行。
三、多線程
多線程定義:
多線程是指程序中包含多個執行流,即在一個程序中可以同時運
行多個不同的線程來執行不同的任務,也就是說允許單個程序創建多個並行執
行的線程來完成各自的任務。
多線程優點:
可以提高CPU的利用率。在多線程程序中,一個線程必須等待的
時候,CPU可以運行其它的線程而不是等待,這樣就大大提高了程序的效率。
1.創建多線程的第一種寫法(代碼)
import time
import random
import threading
def download(i):
"""
一個文件一個文件的下載,按順序下載
"""
print(f"----------------下載{i}文件開始-----------------")
time.sleep(random.random()*10)
print(f"---------------下載{i}文件開始------------------")
# 單線程(主線程)
if __name__ == '__main__':
for i in range(5):
# 創建線程 target參數傳遞的是這個線程需要執行的函數
# args參數傳遞的元組格式 實現文件同時下載
t = threading.Thread(target=download, args=(i,))
# 啟動線程
t.start()
