經過總結,python建立多執行緒主要有如下兩種方法:
接下來,我們就來揭開多執行緒的神秘面紗。
在python3中,python提供了乙個內建模組threading.thread
,可以很方便地讓我們建立多執行緒。
threading.thread()
一般接收兩個引數:
import time
from threading import thread
# 自定義執行緒函式。
def main(name="python"):
for i in range(2):
print("hello", name)
time.sleep(1)
# 建立執行緒01,不指定引數
thread_01 = thread(target=main)
# 啟動執行緒01
thread_01.start()
# 建立執行緒02,指定引數,注意逗號
thread_02 = thread(target=main, args=("ming",))
# 啟動執行緒02
thread_02.start()
可以看到輸出
1hello python
2hello ming
3hello python
4hello ming
是不是超級簡單呢?別急,下面也是一樣簡單。
相比較函式而言,使用類建立執行緒,會比較麻煩一點。
首先,我們要自定義乙個類,對於這個類有兩點要求,
這裡的run
方法,和我們上面執行緒函式
的性質是一樣的,可以寫我們的業務邏輯程式。在start()
後將會呼叫。
來看一下例子
為了方便對比,run
函式我復用上面的main
。
import time
from threading import thread
class mythread(thread):
def __init__(self, name="python"):
# 注意,super().__init__() 一定要寫
# 而且要寫在最前面,否則會報錯。
super().__init__()
self.name=name
def run(self):
for i in range(2):
print("hello", self.name)
time.sleep(1)
if __name__ == '__main__':
# 建立執行緒01,不指定引數
thread_01 = mythread()
# 建立執行緒02,指定引數
thread_02 = mythread("ming")
thread_01.start()
thread_02.start()
當然結果也是一樣的。
1hello python
2hello ming
3hello python
4hello ming
學完了兩種建立執行緒的方式,你一定會驚嘆,咋麼這麼簡單,一點難度都沒有。
其實不然,上面我們的執行緒函式
為了方便理解,都使用的最簡單的**邏輯。而在實際使用當中,多執行緒執行期間,還會出現諸多問題,只是我們現在還沒體會到它的複雜而已。
不過,你也不必擔心,在後面的章節中,我會帶著大家一起來**一下,都有哪些難題,應該如何解決。
磨刀不誤吹柴工,我們首先得來認識一下,python給我們提供的thread
都有哪些函式和屬性,實現哪些功能。學習完這些,在後期的學習中,我們才能更加得以應手。
經過我的總結,大約常用的方法有如下這些:
t=thread(target=func)
# 啟動子執行緒
t.start()
# 阻塞子執行緒,待子執行緒結束後,再往下執行
t.join()
# 判斷執行緒是否在執行狀態,在執行返回true,否則返回false
t.is_alive()
t.isalive()
# 設定執行緒是否隨主線程退出而退出,預設為false
t.daemon = true
t.daemon = false
# 設定執行緒名
t.name = "my-thread"
好了,python執行緒基礎知識,我們大概都介紹完了。 多執行緒講解
using system using system.threading using system.windows.forms namespace threadtest private void form1 load object sender,eventargs e private void but...
java 多執行緒講解
核心 執行緒在被啟用後不一定馬上就執行,而是進入到可執行執行緒的佇列中 1 yield 方法是停止當前執行緒,讓同等優先權的執行緒執行。如果沒有同等優先權的執行緒,那麼yield 方法將不會起作用 2 join 方法使當前執行緒停下來等待,直至另乙個呼叫join方法的執行緒終止 4 sleep 方法...
多執行緒細節講解
一般run方法執行完,執行緒應該正常結束,但是常常有些執行緒是伺服執行緒 即只有獲得某種訊號,才會停止的執行緒 最常見的就是在while迴圈當中的執行緒,設定乙個boolean型別的標誌,來退出迴圈。之所以使用volatile關鍵字,是為了是exit同步。執行緒處於阻塞狀態,呼叫interrupt方...