天天看點

簡單的線程說明

初始多線程

  

import threading


def Process(arg):
    print(arg)

Process(1)     #表示隻有一個人去執行Process這個函數



for i in range(10):     #建立十個線程一次次執行Process這個函數
    t = threading.Thread(target=Process, args=(i,))
    t.start()      

多線程,多線程有一個好的東西就是線程池。

線程和程序的優缺點:

程序:

  優點:   同時利用多個CPU,能夠同時進行多個操作。

  缺點:   耗費資源(重新開辟新的記憶體)

線程:

  優點:   共享記憶體,IO操作的時候,創造并發操作。

  缺點:   搶占資源。

程序不是越多越好,CPU個數 = 程序個數(有幾個CPU最好建立幾個程序)

線程也不是越多越好,具體案例,具體分析,(有幾個線程建立幾個線程,應為線程請求上下文時非常耗時)

程序和線程的目的是能夠提高效率。

單線程和單程序的另一個名字:  主線程,主程序。

主線程可以建立子線程。

在計算機裡邊執行任務的最小單元是線程。

線程的應用的場景是在IO操作的時候,應為IO操作不用CPU,

IO密集型:   适合用線程,IO(不用CPU)

計算密集型:  适合用程序,計算(用CPU)

GIL: 在python裡邊叫全局解釋器鎖,鎖一個程序裡邊的多個線程。

線程鎖,threading.Rlock 和 threading.lock

import threading
import time

globals_num = 0
lock = threading.Rlock()

def Func():
    lock.acquire()       #獲得鎖
    global globals_num
    globals_num += 1
    time.sleep(1)    #等待一秒
    print (globals_num)
    lock.release()        #釋放鎖
for i in range(10):       #建立十個線程,每個線程都執行一遍Func函數
    t = threading.Thread(target=Func) 
    t.start()