Python多執行緒中的threading

2021-10-09 04:52:05 字數 3964 閱讀 4339

前言:在前面的博文裡,我介紹了實現python多工的一種方式——多程序,那麼本博文將介紹另一種方式——多執行緒。

1.2 主線程會等待所有的子執行緒結束後才結束

1.3 檢視執行緒數量

二、多執行緒中的注意點

三、多執行緒共享全域性變數

python的thread模組是比較底層的模組,python的threading模組是對thread做了一些包裝的,可以更加方便的被使用。

1.1.1 單執行緒執行

import time

defsaysorry()

:print

("我在學python,你呢?"

1.1.2 多執行緒執行

import threading

import time

defsaysorry()

:print

("我在學python,你呢?"

) time.sleep(1)

if __name__ ==

"__main__"

:for i in

range(3

):t = threading.thread(target=saysorry)

# 啟動執行緒,即讓執行緒開始執行

說明:可以明顯看出使用了多執行緒併發的操作,花費時間要短很多。

當呼叫start()時,才會真正的建立執行緒,並且開始執行。

import threading

from time import sleep, ctime

defsing()

:for i in

range(3

):print

("正在唱歌...%d"

% i)

sleep(1)

defdance()

:for i in

range(3

):print

("正在跳舞...%d"

% i)

sleep(1)

if __name__ ==

'__main__'

:print

('---開始---:%s'

% ctime())

t1 = threading.thread(target=sing)

t2 = threading.thread(target=dance)

t1.start(

) t2.start(

)# sleep(5) # 開啟此行**,再次執行程式,對比區別。

print

('---結束---:%s'

("正在唱歌...%d"

% i)

sleep(1)

defdance()

:for i in

range(3

):print

("正在跳舞...%d"

% i)

sleep(1)

if __name__ ==

'__main__'

:print

('---開始---:%s'

% ctime())

t1 = threading.thread(target=sing)

t2 = threading.thread(target=dance)

t1.start(

) t2.start(

)while

true

: length =

len(threading.

enumerate()

)print

('當前執行的執行緒數為:%d'

通過上一部分,我們能夠看出:通過使用threading模組能完成多工的程式開發,為了讓每個執行緒的封裝性更完美,所以使用threading模組時,往往會定義乙個新的子類class,只要繼承threading.thread就可以了,然後重寫run方法,示例如下:

import threading

import time

class

mythread

(threading.thread)

:def

run(self)

:for i in

range(3

):time.sleep(1)

msg =

"i'm "

+ self.name +

' @ '

+str

(i)# name屬性中儲存的是當前執行緒的名字

說明:

說明:每個執行緒預設有乙個名字,儘管上面的例子中沒有指定執行緒物件的name,但是python會自動為執行緒指定乙個名字。

當執行緒的run()方法結束時,該執行緒完成。

我們無法控制線程排程程式,但可以通過別的方式來影響執行緒排程的方式。

python中多執行緒 Python之多執行緒

python之多執行緒 一 概念 1 多工可以由多程序完成,也可以由乙個程序內的多執行緒完成。程序是由若干的執行緒組成,乙個程序至少有乙個程序。執行緒是作業系統直接支援的執行單元,天賜高階預壓通常都是內建多執行緒的支援,python的執行緒是真正的posix thread而不是模擬出來的執行緒。2 ...

python中的多執行緒

python中的多執行緒是假的多執行緒!為什麼這麼說,我們先明確乙個概念,全域性直譯器鎖 gil global interpreter lock python 的執行由python虛擬機器 直譯器 來控制,同時只有乙個執行緒在執行 對python虛擬機器的訪問由全域性直譯器鎖 gil 來控制,正是這...

python中的多執行緒

當python程式執行時會預設建立乙個主線程,除了主線程之外我們還可以建立別的執行緒,可以使用threading引入 import threading import time defthinking for i in range 3 threading.current thread 檢視當前正在執行...