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...