Python 執行緒使用

2021-09-19 08:46:56 字數 3192 閱讀 3092

2、呼叫 thread 類的構造器建立執行緒

3、繼承 thread 類建立執行緒類

4、推薦使用thread 類的構造器建立執行緒

1、_thread和threading標準庫

(1)推薦使用threading 模組

_thread庫

threading庫

提供低階別的、原始的執行緒支援,以及乙個簡單的鎖

包含 _thread 模組中的所有方法,並還提供了其他方法,如:功能豐富的多執行緒支援

(2)threading模組中額外的方法

方法解釋

threading.currentthread()

返回當前的執行緒變數

threading.enumerate()

返回乙個包含正在執行的執行緒的list。正在執行指執行緒啟動後、結束前,不包括啟動前和終止後的執行緒。

threading.activecount()

返回正在執行的執行緒數量,與len(threading.enumerate())有相同的結果

(3)thread類的相關方法

方法解釋

run()

用以表示執行緒活動的方法

start()

啟動執行緒活動

join([time])

等待至執行緒中止。這阻塞呼叫執行緒直至執行緒的join() 方法被呼叫中止-正常退出或者丟擲未處理的異常-或者是可選的超時發生。

isalive()

返回執行緒是否活動的

getname()

返回執行緒名

setname()

設定執行緒名

2、呼叫 thread 類的構造器建立執行緒

threading.thread(group=

none

, target=

none

, name=

none

, args=()

, kwargs=

none,*

,daemon=

none

)#構造器的幾個引數解釋:

#group:指定該執行緒所屬的執行緒組。目前該引數還未實現,因此它只能設為 none

#target:指定該執行緒要排程的目標方法(函式名)。

#args:指定乙個元組,以位置引數的形式為 target 指定的函式傳入引數。元組的第乙個元素傳給 target 函式的第乙個引數,元組的第二個元素傳給 target 函式的第二個引數……依此類推。

#kwargs:指定乙個字典,以關鍵字引數的形式為 target 指定的函式傳入引數。

#daemon:指定所構建的執行緒是否為後代執行緒

(1)thread 類的構造器建立並啟動多執行緒的步驟
import threading

'''定義乙個普通的action函式,該函式準備作為執行緒執行體'''

defaction

(max):

for i in

range

(max):

# 呼叫threading模組current_thread()函式獲取當前執行緒

# 執行緒物件的getname()方法獲取當前執行緒的名字

print

(threading.current_thread(

).getname()+

" "+

str(i)

)'''下面是主程式(也就是主線程的執行體)'''

for i in

range(20

):# 呼叫threading模組current_thread()函式獲取當前執行緒

print

(threading.current_thread(

).getname()+

" "+

str(i)

)if i ==8:

# 建立並啟動第乙個執行緒

t1 =threading.thread(target=action, args=(40

,)) t1.start(

)# 建立並啟動第二個執行緒

t2 =threading.thread(target=action, args=(18

,)) t2.start(

)print

('主線程執行完成!'

)

(2)執行結果分析

3、繼承 thread 類建立執行緒類

(1)通過繼承 thread 類來建立並啟動執行緒的步驟

import threading

'''通過繼承threading.thread類來建立執行緒類'''

class

fkthread

(threading.thread)

:def

__init__

(self)

: threading.thread.__init__(self)

self.i =

0# 重寫run()方法作為執行緒執行體

defrun

(self)

:while self.i <50:

# 呼叫threading模組current_thread()函式獲取當前執行緒

# 執行緒物件的getname()方法獲取當前執行緒的名字

print

(threading.current_thread(

).getname()+

" "+

str(self.i)

) self.i +=

1'''下面是主程式(也就是主線程的執行體)'''

for i in

range

(100):

# 呼叫threading模組current_thread()函式獲取當前執行緒

print

(threading.current_thread(

).getname()+

" "+

str(i)

)if i ==20:

# 建立並啟動第乙個執行緒

ft1 = fkthread(

) ft1.start(

)# 建立並啟動第二個執行緒

ft2 = fkthread(

) ft2.start(

)print

('主線程執行完成!'

)

(2)執行結果分析

4、推薦使用thread 類的構造器建立執行緒

python執行緒陣列 python 執行緒使用

執行緒演示指令碼 coding utf 8 import threading from time import ctime,sleep def music func for i in range 2 print i was listening to s.s func,ctime sleep 1 de...

python 執行緒使用

執行緒演示指令碼 coding utf 8 import threading from time import ctime,sleep def music func for i in range 2 print i was listening to s.s func,ctime sleep 1 de...

python使用多執行緒

做測試的時候,我們不得不接觸下多執行緒,雖然python不能發揮cpu多核的優勢,但是在測試的時候依然十分必要,比如在做介面測試的時候,發出請求之後,在等待伺服器端給予回應的時候,我們不應該傻傻地等,其它執行緒可以在等待的同時發出請求。這樣,我們就能更快地完成我們的測試任務。coding utf 8...