Python多執行緒之threading

2021-10-05 10:55:53 字數 1743 閱讀 3897

1.多執行緒的基礎函式及增加執行緒add thread

import threading

#1.基礎函式

#def main():

# print(threading.active_count()) #列印目前程序的數目

# print(threading.enumerate()) #檢視程序列表

# print(threading.current_thread()) #檢視正在執行哪乙個執行緒

#2.增加程序

defthread_job()

:print

('this is a thread of %s'

% threading.current_thread())

defmain()

: thread = threading.thread(target=thread_job)

#增加乙個程序

thread.start(

)#開始執行

if __name__ ==

'__main__'

: main(

)

2.守護程序和join

1.守護程序的含義以及join對守護執行緒的影響

如果設定乙個主線程的子執行緒為守護執行緒,就表示你在說這個子執行緒是不重要的,在程序退出的時候,不用等待這個子執行緒退出。意思就是主線程結束以後,子執行緒還沒有來得及執行,整個程式就退出了。

在預設情況下子執行緒為非守護執行緒。就是說,主線程的任務完成之後,主線程隨之結束,子執行緒繼續執行自己的任務,直到全部的子執行緒的任務全部結束,程式結束。

注:在預設的情況下python執行緒為非守護執行緒,即setdaemon(false)。

join() 方法的功能是在程式指定位置,優先讓該方法的呼叫者使用 cpu 資源。

在子執行緒為守護執行緒時,使用了join()後,主線程一直等待全部的子執行緒結束之後,主線程自身才結束,程式退出。

具體的**實現及講解可以參考另外一位博主的部落格

守護程序及join的詳細講解

2.join對非守護執行緒的影響

import time

defthread_job()

:print

('t1 start\n'

)for i in

range(10

):time.sleep(

0.1)

print

('t1 finish\n'

)def

t2_job()

:print

('t2 start\n'

)print

('t2 finish\n'

)def

main()

: added_thread = threading.thread(target=thread_job, name=

't1'

) thread2 = threading.thread(target=t2_job, name=

't2'

) added_thread.start(

) thread2.start(

) added_thread.join(

)#標誌

print

('all done\n'

)if __name__ ==

'__main__'

: main(

)

Python多執行緒之event

事件 event 用於執行緒間同步和通訊。比如執行緒a要完成某一任務 event 執行緒b才能執行後面的 怎麼實現呢,就是用event。event常用方法 釋義set 開始乙個事件 wait 如果未設定set狀態會一直等待,否則過 clear 清除set狀態 isset 是否設定set狀態 注意 w...

python多執行緒之 thread

多執行緒類似於同時執行多個不同程式,多執行緒執行有如下優點 執行緒在執行過程中與程序還是有區別的。每個獨立的執行緒有乙個程式執行的入口 順序執行序列和程式的出口。但是執行緒不能夠獨立執行,必須依存在應用程式中,由應用程式提供多個執行緒執行控制。每個執行緒都有他自己的一組cpu暫存器,稱為執行緒的上下...

Python多執行緒程式設計之多執行緒加鎖

python語言本身是支援多執行緒的,不像php語言。下面的例子是多個執行緒做同一批任務,任務總是有task num個,每次執行緒做乙個任務 print 做完後繼續取任務,直到所有任務完成為止。1 coding utf 8 2import threading 34 start task 0 5 ta...