function - 執行緒函式。
args - 傳遞給執行緒函式的引數,他必須是個tuple型別。
kwargs - 可選引數
import _thread,time
defthread_handle
(thread_name,delay)
:#定義多執行緒的處理函式
for num in
range(10
):time.sleep(delay)
print
("【%s】num = %s"
%(thread_name,num)
)def
main()
:for item in
range(10
):_thread.start_new_thread(thread_handle,
("thread - %s"
% item,1)
) time.sleep(
200)
if __name__ ==
'__main__'
: main(
)
thread 模組已被廢棄。使用者可以使用 threading 模組代替。所以,在 python3 中不能再使用"thread" 模組。為了相容性,python3 將 thread 重新命名為 「_thread」。
threading.currentthread(): 返回當前的執行緒變數。
threading.enumerate(): 返回乙個包含正在執行的執行緒的list。正在執行指執行緒啟動後、結束前,不包括啟動前和終止後的執行緒。
threading.activecount(): 返回正在執行的執行緒數量,與len(threading.enumerate())有相同的結果。
除了使用方法外,執行緒模組同樣提供了thread類來處理執行緒,thread類提供了以下方法:
run(): 用以表示執行緒活動的方法。
start():啟動執行緒活動。
join([time]): 等待至執行緒中止。這阻塞呼叫執行緒直至執行緒的join() 方法被呼叫中止-正常退出或者丟擲未處理的異常-或者是可選的超時發生。
isalive(): 返回執行緒是否活動的。
getname(): 返回執行緒名。
setname(): 設定執行緒名
import threading,time
defthread_handle
(delay)
:#定義多執行緒的處理函式
for num in
range(10
):time.sleep(delay)
print
("【%s】num = %s"
%(threading.current_thread(
).name,num)
)def
main()
:for item in
range(10
):#通過迴圈的方式建立程序
thread = threading.thread(target=thread_handle,args=(1
,),name=
"執行執行緒-%s"
% item)
thread.start(
)#啟動執行緒
print
("主線程id:%s 主線程名稱:%s"
%(threading.current_thread(
).ident,threading.current_thread(
).name)
)print
("當前活躍的執行緒個數:%s"
% threading.active_count())
#存活的執行緒個數
print
("當前活躍的執行緒資訊:%s"
% threading.
enumerate()
)#執行緒資訊
if __name__ ==
'__main__'
: main(
)
繼承threading.thread
import threading,time
class
mythread
(threading.thread)
:def
__init__
(self, thread_name, delay)
:super()
.__init__(name=thread_name)
# 將執行緒名稱傳遞給父類構造
self.__delay = delay #儲存延遲時間
defrun
(self)
:#執行緒的主體方法
for num in
range(5
):time.sleep(self.__delay)
print
("【%s】num = %s"
%(threading.current_thread(
).getname(
), num)
)def
main()
:for item in
range(10
):#通過迴圈的方式建立程序
thread = mythread(
"執行執行緒 - %s"
% item,1)
#例項化執行緒物件
thread.start(
)#啟動多執行緒
if __name__ ==
'__main__'
: main(
)
守護執行緒會隨著執行緒同時存在,如果程式執行完畢了,那麼守護執行緒也會消失
import threading,time
class
mythread
(threading.thread)
:def
__init__
(self, thread_name, delay, count)
:super()
.__init__(name=thread_name)
# 將執行緒名稱傳遞給父類構造
self.__count = count#執行緒執行次數
self.__delay = delay #儲存延遲時間
defrun
(self)
:#執行緒的主體方法
for num in
range
(self.__count)
: time.sleep(self.__delay)
print
("【%s】num = %s"
%(threading.current_thread(
).getname(
), num)
)def
main()
:for item in
range(10
):#通過迴圈的方式建立程序
thread = mythread(
"執行執行緒 - %s"
% item,2,
5)#例項化執行緒物件
daemo_thread = mythread(
"守護執行緒",1
,999
)#守護執行緒
daemo_thread.setdaemon(
true
)#執行緒設定為守護執行緒
daemo_thread.start(
) thread.start(
)#啟動多執行緒
if __name__ ==
'__main__'
: main(
)
參考 python多執行緒 python多執行緒
通常來說,多程序適用於計算密集型任務,多執行緒適用於io密集型任務,如網路爬蟲。關於多執行緒和多程序的區別,請參考這個 下面將使用python標準庫的multiprocessing包來嘗試多執行緒的操作,在python中呼叫多執行緒要使用multiprocessing.dummy,如果是多程序則去掉...
python多執行緒詳解 Python多執行緒詳解
前言 由於最近的工作中一直需要用到python去處理資料,而在面對大量的資料時,python多執行緒的優勢就展現出來了。因而藉此機會,盡可能詳盡地來闡述python多執行緒。但對於其更底層的實現機制,在此不做深究,僅是對於之前的一知半解做個補充,也希望初學者能夠通過這篇文章,即便是照葫蘆畫瓢,也能夠...
python程式多執行緒 PYTHON多執行緒
在單執行緒的情況下,程式是逐條指令順序執行的。同一時間只做乙個任務,完成了乙個任務再進行下乙個任務。比如有5個人吃飯,單執行緒一次只允許乙個人吃,乙個人吃完了另乙個人才能接著吃,假如每個人吃飯都需要1分鐘,5個人就需要5分鐘。多執行緒的情況下,程式就會同時進行多個任務,雖然在同一時刻也只能執行某個任...