多線程爬蟲


一、 程序,進程,線程

  1. 程序:由源代碼生成的可執行應用。(例如:QQ,淘寶等)
  2. 進程:一個正在運行的程序可以看做一個進程,進程擁有獨立運行所需要的全部資源。(例如:打開QQ相當於開啟一個進程)
  3. 線程:程序中獨立運行的代碼段。(例如:在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()

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM