Python多執行緒

2021-10-04 18:23:36 字數 3875 閱讀 8934

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分鐘。多執行緒的情況下,程式就會同時進行多個任務,雖然在同一時刻也只能執行某個任...