一、線程基礎
1.1 線程狀態
建立、就緒、運行、阻塞、結束
1.2 線程同步(鎖)
多線程的優勢在於可以同時運行多個任務(至少感覺起來是這樣)。但是當線程需要共享數據時,可能存在數據不同步的問題。考慮這樣一種情況:一個列表裡所有元素都是0,線程"set"從後向前把所有元素改成1,而線程"print"負責從前往後讀取列表並打印。那麼,可能線程"set"開始改的時候,線程"print"便來打印列表了,輸出就成了一半0一半1,這就是數據的不同步。為了避免這種情況,引入了鎖的概念。
鎖有兩種狀態——鎖定和未鎖定。每當一個線程比如"set"要訪問共享數據時,必須先獲得鎖定;如果已經有別的線程比如"print"獲得鎖定了,那麼就讓線程"set"暫停,也就是同步阻塞;等到線程"print"訪問完畢,釋放鎖以後,再讓線程"set"繼續。經過這樣的處理,打印列表時要麼全部輸出0,要麼全部輸出1,不會再出現一半0一半1的尷尬場面。
未完待續!
由於大家都是手機看考慮到觀看感受,So 1.3 1.4 內容詳見下一篇連載,請關注小編帳號,歡迎評論收藏轉發。
相關推薦
'如何將一個 Python 函數進行模塊化封裝'
"使用 Python 函數來最大程度地減少重複任務編碼工作量。-- Seth Kenlon(作者)你是否對函數、類、方法、庫和模塊等花哨的編程術語感到困惑?你是否在與變量作用域鬥爭?無論你是自學成才的還是經過正式培訓的程序員,代碼的模塊化都會令人困惑。但是類和庫鼓勵模塊化代...
'Python最佳工程實踐,建立一個完美的工程項目'
"在程序開發時候一套好的開發環境和工具棧,可以幫我們極大的提高開發的效率,避免把大量時間浪費在周邊瑣事上。本文以Python為例,教大家如何快速打造完美的Python項目開發環境:內容涵蓋了模塊依賴管理、代碼風格管理、調試測試管理和Git版本管理,使用git hook做項目...
'Python GUI教程(一):在PyQt5中創建第一個GUI圖形用戶界面'
"一、第一個GUI首先,我們使用pyqt5的窗口小部件創建一個最基本的GUI:# coding:utf-8import sysfrom PyQt5.QtWidgets import *app = QApplication(sys.argv)win = QWidget()wi...
'「收藏」北大研究生筆記:400集python視頻教程+36本電子書免費領'
"python,是一種解釋型(高級)的,面向對象的,帶有動態語義的高級程序設計的開源語言。1989年,Guido von Rossum(荷蘭人)人稱龜叔,他在聖誕節時因為無聊而開發出來的,詳細的python發展史介紹可以百度或Google,已經很多了,不再贅述。python...
'免費送你一個強大的Python股票分析工具'
"Python 中的Talib是強大的股票指標分析工具。但是還有更強的,誰家分析工具更強,某某駕校來,不,接下來就送你一個更簡單,更好用的股票指標庫,完全和pandas強強結合的分析庫,路過看過絕對不能錯過啊。更好用的股票指標庫 Technical Analysis (TA...
Python
2019-08-25
推薦中...