python多執行緒(二)

2021-09-19 15:27:18 字數 4103 閱讀 3439

建立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多執行緒。但對於其更底層的實現機制,在此不做深究,僅是對於之前的一知半解做個補充,也希望初學者能夠通過這篇文章,即便是照葫蘆畫瓢,也能夠...