執行緒與程序相關1 執行緒與多執行緒

2021-10-04 23:39:23 字數 1839 閱讀 5274

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 狹義定義 程序就是一段程式的執行過程。廣義定義 程序是乙個程式關於某個資料集合的一次執行。它是作業系統動態執行的基本單元,在傳統的作業系統中,程序既是基本的分配單元,也是基本的執行單元。簡單的來講程序的概念主要有兩點 第一,程序是乙個實體。每乙個程序都有它自己...