建立range的物件
range(數值)
range(起點值,終點值)
range(起點值,終點值,步長)
它的效果相當於給我們快速的生成了乙個列表
但是,它比列表省空間,效率高
當我們需要匯入乙個模組時可使用import
或者from...import
方式來導
執行命令後,直譯器會根據優先順序來尋找
1,最優先,從當前執行檔案所在的工作目錄開始找
2,根據環境變數的順序依次查詢
只要一找到對應的要匯入的內容,就會停止繼續的搜尋
a模組匯入了自定義的b模組
單獨執行a模組是可以獲取b中識別符號的資料的
如果,m.py匯入了a模組,並且m模組與a模組不在同一級目錄
當以m.py啟動時,會出現報錯
# 多執行緒
## 執行緒的模組
import threading
thread
英 [θred] 美 [θred]
n.(棉、毛、絲等的)線;線索;脈絡;思緒;思路;貫穿的主線;線狀物;細細的一條
v.穿(針);紉(針);穿過;(使)穿過;通過;穿行;穿成串;串在一起
## 執行緒物件的建立
建立乙個執行緒,指向的函式,不接收引數的情況
t = threading.thread(target=函式名)
建立乙個執行緒,指向的函式,收引數的情況
t = threading.thread(target=函式名, args=(實參1,))
target
英 [ˈtɑːɡɪt] 美 [ˈtɑːrɡɪt]
n.目標;指標;(攻擊的)目標,物件;靶;靶子
v.把…作為攻擊目標;把…作為批評的物件;面向,把…對準(某群體)
## 讓執行緒物件t開始工作
t.start()
start
英 [stɑːt] 美 [stɑːrt]
v.開始,著手,動手(做或使用);(使)發生,開始進行;開動;發動;啟動
n.開頭;開端;開始;起始優勢;良好的基礎條件
## 主線程與子執行緒的關係
生命週期
我們的py檔案執行起來的時候,就會有乙個主線程
當子執行緒物件建立後,當子執行緒物件執行時,才會創造出來新的執行緒,叫做子執行緒
子執行緒如果**沒有執行結束,主線程是會等待子執行緒的
直接子執行緒全部執行完畢
主線程才會結束
# 程序與執行緒的關係
## 程序的主要功能
分配資源
## 執行緒的主要功能
執行任務
## 包含關係
程序包含執行緒
每開乙個程序出來,都必然會有乙個主線程
程序提供了資源(記憶體空間)
執行緒主要執行任務
# 多程序
## 多程序的模組
import multiprocessing
多種方式前進
## 建立乙個程序物件
p = multiprocessing.process(target=函式名)
p.start()
multi
英 ['mʌlti] 美 [ˈmʌlti]
n.多種;多數
process
英 [ˈprəʊses , prəˈses] 美 [ˈprɑːses , prəˈses]
n.(為達到某一目標的)過程;程序;(事物發展,尤指自然變化的)過程,步驟,流程;做事方法;工藝流程;工序
v.加工;處理;審閱,審核,處理(檔案、請求等);資料處理
v.列隊行進;緩緩前進
第三人稱單數: processes 複數: processes 現在分詞: processing 過去式: processed 過去分詞: processed
派生詞: processing n.
記憶技巧:pro 向前 + cess 行走,前進 → 向前走的〔歷程〕→ 過程
process的現在分詞
ing代表正在進行某個事件
eat,吃
eating,正在吃
thread
threading
p.join()
功能特性:
當**讀到這個命時
直譯器會關注一下程序物件p它是否已經執行完成了
如果,沒有執行完成,卡住
直到p的**全部執行結束,才會通
檢視當前程序的id
os.getpid()
``
get,得到
p,process,程序
id,編號
通過程序物件查
程序物件.id
檢視當前程序的父程序id
os.getppid()
p,parent,父母
判斷程序物件p是否存活
p.is_alive
# 程序與執行緒的比較
## 多執行緒可以共享全域性變數
# 執行緒鎖
- 功能
解決多個執行緒同時使用全域性變數,有可能會造成的資料的混亂
- 如何建立鎖
鎖物件 = threading.lock()
lock
英 [lɒk] 美 [lɑːk]
v.(用鎖)鎖上;被鎖住;把…鎖起來;(使)固定,卡住,塞住
n.鎖;車鎖;制動器;鎖定器;製輪楔;(機器部件等的)鎖定
- 如何使用鎖
- 上鎖
```鎖物件.acquire()
``````
acquire
英 [əˈkwaɪə(r)] 美 [əˈkwaɪər]
v.(通過努力、能力、行為表現)獲得;購得;獲得;得到
```- 解鎖
```鎖物件.release()
``````
release
英 [rɪˈliːs] 美 [rɪˈliːs]
v.釋放;放出;放走;放開;鬆開;使自由移動(或飛翔、降落等);發洩;宣洩
n.釋放;獲釋;公開;發行;發布;新發行的東西;(尤指)新雷射唱片,新電影
```# 程序鎖
- 建立鎖
程序鎖物件 = multiprocessing.lock()
- 使用鎖
- 上鎖
```程序鎖物件.acquire()
```- 解鎖
```程序鎖物件.release()
```# 守護程序
程序物件.daemon = true
daemon
英 [ˈdiːmən] 美 [ˈdiːmən]
n.(古希臘神話中的)半神半人精靈
# 訊號量
- 建立物件
訊號量物件 = multiprocessing.semaphore(鑰匙的數量)
semaphore
英 [ˈseməfɔː®] 美 [ˈseməfɔːr]
訊號量;旌旗燈號量;訊號量;訊號燈;訊號
- 使用
- 獲得-從面版上拿
```訊號量物件.acquire()
```- 釋放-歸還到面版上
```訊號量物件.release()
```# 同步與非同步
# 阻塞與非阻塞
python多執行緒 二
python3通過兩個標準庫 thread和threading提供對執行緒的支援。thread提供了低階別的 原始的執行緒以及乙個簡單的鎖,它相比於threading模組的功能還是比較有限的。threading模組除了包含 thread模組中的所有方法外,還提供的其他方法 除了使用方法外,執行緒模組...
python多執行緒 python多執行緒
通常來說,多程序適用於計算密集型任務,多執行緒適用於io密集型任務,如網路爬蟲。關於多執行緒和多程序的區別,請參考這個 下面將使用python標準庫的multiprocessing包來嘗試多執行緒的操作,在python中呼叫多執行緒要使用multiprocessing.dummy,如果是多程序則去掉...
python多執行緒詳解 Python多執行緒詳解
前言 由於最近的工作中一直需要用到python去處理資料,而在面對大量的資料時,python多執行緒的優勢就展現出來了。因而藉此機會,盡可能詳盡地來闡述python多執行緒。但對於其更底層的實現機制,在此不做深究,僅是對於之前的一知半解做個補充,也希望初學者能夠通過這篇文章,即便是照葫蘆畫瓢,也能夠...