多執行緒講解及建立

2021-09-29 18:20:09 字數 2326 閱讀 3188

經過總結,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方...