1.2.1 概念理解
1.2.2 執行緒的狀態1.3.1 標準庫threading
python中的執行緒開發使用標準庫threading,程序靠執行緒執行**,至少有乙個主線程,其他執行緒是工作執行緒,主線程是第乙個啟動的執行緒,即從上到下**執行的那個執行緒,工作執行緒是在主線程執行的基礎上進行分支並行執行的。
1.3.2 執行緒的使用
import threading
defworker()
:print
('i am working'
)print
('finished'
)t = threading.thread(target=worker, name=
'執行緒名字'
, args=()
, kwargs=
none,*
, daemon=
none
)t.start(
)
名稱
作用threading.thread()
首先建立執行緒物件
target
執行緒呼叫的物件,用來指向目標函式物件
name
指定執行緒的名稱,可以重複
args
為目標函式傳遞可變引數,接收多個引數,封裝為元組
kwargs
可變關鍵字傳參,字典
daemon
守護執行緒,決定工作執行緒是否跟隨主線程消亡,true為跟隨
執行緒物件.start()
啟動執行緒
python中未提供執行緒退出的方法,要麼執行緒函式執行完畢,要麼執行緒函式中丟擲異常。
執行緒的傳參本質和函式傳參沒什麼區別。
1.3.2 threading物件的屬性和方法
名稱作用
name
通過執行緒物件.name顯示執行緒的名字,可重複
ident
執行緒物件屬性,返回執行緒id(唯一),非0整數,只有執行緒啟動後才有id,否則未none,執行緒退出,此id依然可以訪問
is_alive()
判斷執行緒是否活著
start()
啟動執行緒,每個執行緒必須且只能執行一次該方法
run()
執行執行緒函式,相當於函式呼叫
isdaemon()
是否是daemon執行緒
setdaemon()
設定為daemon執行緒,必須在start()方法之前
join(timeout=none)
用來等待另乙個執行緒
乙個程序中如果有多個執行緒執行,就是多執行緒,實現一種併發
1.3.1 執行緒安全
print()函式分為兩步,第一步列印內容,第二步列印換行符,在多執行緒中會發生執行緒切換,print()函式會被打斷,所以print函式是執行緒不安全的(即執行一段**,結果未達到預期結果)
解決方法:
1.不讓print()函式列印換行
2.使用logging,日誌處理模組,執行緒安全
logging配置:
import logging
fmtstr =
"%(asctime)s %(threadname)s %(thread)s %(message)s"
logging.basicconfig(level=logging.info,
format
=fmtstr)
logging.info(內容)
# 使用列印,message即為列印的內容
多執行緒 執行緒與程序 執行緒排程 建立執行緒
步驟 定義thread類的子類,並重寫該類的run 方法,該run 方法的方法體就代表了執行緒需要完成的任務,因此把run 方法稱為執行緒執行體。建立thread子類的例項,即建立了執行緒物件 呼叫執行緒物件的start 方法來啟動該執行緒 測試 自定義執行緒類 public class mythr...
Python 多執行緒 程序與執行緒相關概念 一
並行 同時做某些事,可以互不干擾的同一時刻做幾件事。併發 也是同時做某些事,但是強調,同一時刻做了幾件事。1 佇列 緩衝區 排隊就是佇列,先進先出。排隊是一種解決併發的方法。排成的佇列,其實就是乙個緩衝地帶,就是緩衝區。2 優先佇列 在到達佇列時優先處理,就是優先佇列。3 爭搶 資源被乙個執行緒佔據...
程序 執行緒 多執行緒相關總結
一 說說概念 1 程序 process 狹義定義 程序就是一段程式的執行過程。廣義定義 程序是乙個程式關於某個資料集合的一次執行。它是作業系統動態執行的基本單元,在傳統的作業系統中,程序既是基本的分配單元,也是基本的執行單元。簡單的來講程序的概念主要有兩點 第一,程序是乙個實體。每乙個程序都有它自己...