一、什麼是執行緒
執行緒:顧名思義,就是一條流水線工作的過程,一條流水線必須屬於乙個車間,乙個車間的工作過程是乙個程序
所以,程序只是用來把資源集中到一起(程序只是乙個資源單位,或者說資源集合),而執行緒才是cpu上的執行單位。
多執行緒(即多個控制線程)的概念是,在乙個程序中存在多個控制線程,多個控制線程共享該程序的位址空間,相當於乙個車間內有多條流水線,都共用乙個車間的資源。(乙個程序裡面開多個執行緒(共享同乙個程序裡面的記憶體空間))
例如,北京地鐵與上海地鐵是不同的程序,而北京地鐵裡的13號線是乙個執行緒,北京地鐵所有的線路共享北京地鐵所有的資源,比如所有的乘客可以被所有線路拉。
注意:1.所以程序裡面真正幹活的是執行緒(程序裡面有執行緒)
2.程序只是用來把資源互相隔離開,而執行緒才是真正負責cpu來調動他的
二、執行緒的建立開銷小
建立程序的開銷要遠大於執行緒?
如果我們的軟體是乙個工廠,該工廠有多條流水線,流水線工作需要電源,電源只有乙個即cpu(單核cpu)
乙個車間就是乙個程序,乙個車間至少一條流水線(乙個程序至少乙個執行緒)
建立乙個程序,就是建立乙個車間(申請空間,在該空間內建至少一條流水線)
而建執行緒,就只是在乙個車間內造一條流水線,無需申請空間,所以建立開銷小
三、執行緒與程序的區別
1.建立執行緒比程序開銷小(開乙個程序,裡面就有空間了,而執行緒在程序裡面,就沒必要在開乙個空間了)
2.多執行緒一定是在乙個程序裡面開啟的,共享程序裡面的資源
3.執行緒啟動的速度快
4.同一程序下的多個執行緒共享程序的資源,而多個程序之間記憶體空間是隔離的
n = 100
def work():
global n
n-=100
如果開程序n是相互獨立的,而執行緒是共享了資源,就不隔離了
在wins下開程序,子程序不會拷貝父程序的
在linux下開程序,子程序會完全拷貝父程序的
5.執行緒可以跟它所在的程序之內 的執行緒通訊
四、為何要用多執行緒
1. 多執行緒共享乙個程序的位址空間
2. 執行緒比程序更輕量級,執行緒比程序更容易建立可撤銷,在許多作業系統中,建立乙個執行緒比建立乙個程序要快10-100倍,在有大量執行緒需要動態和快速修改時,這一特性很有用
3. 若多個執行緒都是cpu密集型的,那麼並不能獲得效能上的增強,但是如果存在大量的計算和大量的i/o處理,擁有多個執行緒允許這些活動彼此重疊執行,從而會加快程式執行的速度。
4. 在多cpu系統中,為了最大限度的利用多核,可以開啟多個執行緒,比開程序開銷要小的多。(這一條並不適用於python)
測試相關理論
1.概念 驗證軟體功能是否能夠滿足使用者的需求。找bug,驗證它沒有問題 1979年,軟體測試藝術 軟體測試是為了發現錯誤而執行程式或系統的過程。1983年,軟體測試完全指南 測試是以評價乙個程式或者系統屬性為目標的任何一種活動。測試是對軟體質量的度量。1983年,ieee軟體工程標準術語 使用人工...
Python之併發程式設計(四)多執行緒 相關理論
什麼是執行緒 執行緒 顧名思義,就是一條流水線工作的過程,一條流水線必須屬於乙個車間,乙個車間的工作過程是乙個程序 所以,程序只是用來把資源集中到一起 程序只是乙個資源單位,或者說資源集合 而執行緒才是cpu上的執行單位。多執行緒 即多個控制線程 的概念是,在乙個程序中存在多個控制線程,多個控制線程...
物件導向的相關理論
物件導向 一 程式設計正規化 1.命令式程式設計,2.宣告式 命令式程式設計的思想 面向過程,物件導向。宣告式的思想 dsl 領域特定語言 命令式程式設計的定義 告訴計算機以什麼指令來執行 注重中間過程。宣告式的定義 告訴計算機想要什麼結果就讓計算機自己去執行。不需要關心過程。面向過程 一步一步的向...