在本教程中,我們將向您介紹多線程的概念,以及如何用 python 編程語言實現線程。讓我們從理解什麼是線程開始。
線
線程是輕量級進程(大型進程的子進程),可以並行運行,每個線程都可以執行一些任務。線程通常包含在進程中。同一進程中可以存在多個線程。在同一個進程中,線程共享內存和進程的狀態。
螺紋類型
有兩種線程:
- 內核級線程
- 用戶級線程
下面我們解釋了兩者之間的一些區別:
| 內核級線程 | 用戶級線程 |
| 被操作系統識別。 | 操作系統無法識別。 |
| 由操作系統實現。 | 由系統用戶實現。 |
| 實現是複雜的。 | 實現簡單易行。 |
| Solaris 就是一個例子 | Posix 就是一個例子 |
| 需要硬體支持 | 不需要硬體支持 |
什麼是多線程?
現在我們已經對什麼是線程有了一個基本的概念,讓我們試著理解多線程的概念。
現代計算機的中央處理器有多個處理核心,每個核心可以同時運行多個線程,這使我們能夠同時執行幾個任務。這個並發運行多個線程並行執行任務的過程叫做多線程。
多線程提供了以下好處:
一個進程中的多個線程共享相同的數據空間,因此可以比單獨的進程更容易地共享信息或相互通信。
線程不需要太多內存開銷;就內存需求而言,它們比進程便宜。
多線程程序可以在具有多個 CPU 的計算機系統上運行得更快,因為這些線程可以同時執行。
舉個例子
假設您創建了一個簡單的活動註冊應用,如果參與者希望參加活動,他們必須註冊。您有一個簡單的 HTML 表單供用戶填寫,還有一個後端,它是一個單線程應用。
由於應用是單線程的,它一次只能處理一個請求。但是,如果這個活動是一場「酷玩音樂音樂會」,有數百萬人想要註冊,那該怎麼辦。一次處理一個請求會大大降低性能。
因此,我們使應用多線程化,並在其中啟動多個線程,從而允許並行處理。
Python 中的多線程
在 Python 中執行多線程使用threading
模塊。threading
模塊提供了幾種函數/方法,可以在 python 中輕鬆實現多線程。
在我們開始使用threading
模塊之前,我們想首先向您介紹一個名為time
的模塊,它提供了一個time()
、ctime()
等函數,我們將經常使用這些函數來獲取當前系統時間,以及另一個關鍵函數sleep()
,該函數用於在給定的秒數內暫停當前線程的執行。
例如,
現在讓我們看看如何使用threading
模塊啟動多個線程。
Code Example:
讓我們試著理解上面的代碼:
我們使用import threading
語句導入了thread
類,並且還導入了time
模塊。為了創建一個新的線程,我們創建了一個 te Thread
類的對象。它採用以下參數:
target
:線程將要執行的功能。
args
:要傳遞給目標函數的參數。我們可以傳遞多個用逗號分隔的參數。
在上面的例子中,我們創建了兩個具有不同目標函數的線程,即thread1(i)
和thread2(i)
。
為了開始一個線程,我們使用了Thread
類的start()
方法。
我們還使用了time
模塊的time.sleep()
方法暫停thread1
的執行 3 秒鐘。
一旦線程啟動,當前程序(您可以將其視為主線程)也會繼續執行。為了防止主程序在線程執行完成之前完成其執行,我們使用join()
方法。
因此,當前程序將等待t1
和t2
的完成,並且只有在它們的執行完成之後,當前程序的剩餘語句才會被執行,即語句print('Execution completed.')
。
在注釋掉第 16、17 行的代碼後,您應該嘗試運行上面的代碼一次,我們使用join
方法查看結果。
至此,我們對 python 多線程的基本介紹已經完成,現在我們知道如何在 python 中創建和啟動多線程。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/290880.html