新聞中心
在本教程中,我們將向您介紹多線程的概念,以及如何用 python 編程語言實(shí)現(xiàn)線程。讓我們從理解什么是線程開始。

專業(yè)從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè),高端網(wǎng)站制作設(shè)計(jì),微信小程序,網(wǎng)站推廣的成都做網(wǎng)站的公司。優(yōu)秀技術(shù)團(tuán)隊(duì)竭力真誠(chéng)服務(wù),采用H5建站+CSS3前端渲染技術(shù),成都響應(yīng)式網(wǎng)站建設(shè)公司,讓網(wǎng)站在手機(jī)、平板、PC、微信下都能呈現(xiàn)。建站過程建立專項(xiàng)小組,與您實(shí)時(shí)在線互動(dòng),隨時(shí)提供解決方案,暢聊想法和感受。
線
線程是輕量級(jí)進(jìn)程(大型進(jìn)程的子進(jìn)程),可以并行運(yùn)行,每個(gè)線程都可以執(zhí)行一些任務(wù)。線程通常包含在進(jìn)程中。同一進(jìn)程中可以存在多個(gè)線程。在同一個(gè)進(jìn)程中,線程共享內(nèi)存和進(jìn)程的狀態(tài)。
螺紋類型
有兩種線程:
- 內(nèi)核級(jí)線程
- 用戶級(jí)線程
下面我們解釋了兩者之間的一些區(qū)別:
| 內(nèi)核級(jí)線程 | 用戶級(jí)線程 | | 被操作系統(tǒng)識(shí)別。 | 操作系統(tǒng)無法識(shí)別。 | | 由操作系統(tǒng)實(shí)現(xiàn)。 | 由系統(tǒng)用戶實(shí)現(xiàn)。 | | 實(shí)現(xiàn)是復(fù)雜的。 | 實(shí)現(xiàn)簡(jiǎn)單易行。 | | Solaris 就是一個(gè)例子 | Posix 就是一個(gè)例子 | | 需要硬件支持 | 不需要硬件支持 |
什么是多線程?
現(xiàn)在我們已經(jīng)對(duì)什么是線程有了一個(gè)基本的概念,讓我們?cè)囍斫舛嗑€程的概念。
現(xiàn)代計(jì)算機(jī)的中央處理器有多個(gè)處理核心,每個(gè)核心可以同時(shí)運(yùn)行多個(gè)線程,這使我們能夠同時(shí)執(zhí)行幾個(gè)任務(wù)。這個(gè)并發(fā)運(yùn)行多個(gè)線程并行執(zhí)行任務(wù)的過程叫做多線程。
多線程提供了以下好處:
-
一個(gè)進(jìn)程中的多個(gè)線程共享相同的數(shù)據(jù)空間,因此可以比單獨(dú)的進(jìn)程更容易地共享信息或相互通信。
-
線程不需要太多內(nèi)存開銷;就內(nèi)存需求而言,它們比進(jìn)程便宜。
-
多線程程序可以在具有多個(gè) CPU 的計(jì)算機(jī)系統(tǒng)上運(yùn)行得更快,因?yàn)檫@些線程可以同時(shí)執(zhí)行。
-
-
舉個(gè)例子
假設(shè)您創(chuàng)建了一個(gè)簡(jiǎn)單的活動(dòng)注冊(cè)應(yīng)用,如果參與者希望參加活動(dòng),他們必須注冊(cè)。您有一個(gè)簡(jiǎn)單的 HTML 表單供用戶填寫,還有一個(gè)后端,它是一個(gè)單線程應(yīng)用。
由于應(yīng)用是單線程的,它一次只能處理一個(gè)請(qǐng)求。但是,如果這個(gè)活動(dòng)是一場(chǎng)“酷玩音樂音樂會(huì)”,有數(shù)百萬人想要注冊(cè),那該怎么辦。一次處理一個(gè)請(qǐng)求會(huì)大大降低性能。
因此,我們使應(yīng)用多線程化,并在其中啟動(dòng)多個(gè)線程,從而允許并行處理。
Python 中的多線程
在 Python 中執(zhí)行多線程使用threading模塊。threading模塊提供了幾種函數(shù)/方法,可以在 python 中輕松實(shí)現(xiàn)多線程。
在我們開始使用threading模塊之前,我們想首先向您介紹一個(gè)名為time的模塊,它提供了一個(gè)time()、ctime()等函數(shù),我們將經(jīng)常使用這些函數(shù)來獲取當(dāng)前系統(tǒng)時(shí)間,以及另一個(gè)關(guān)鍵函數(shù)sleep(),該函數(shù)用于在給定的秒數(shù)內(nèi)暫停當(dāng)前線程的執(zhí)行。
例如,
現(xiàn)在讓我們看看如何使用threading模塊啟動(dòng)多個(gè)線程。
Code Example:
讓我們?cè)囍斫馍厦娴拇a:
我們使用import threading語句導(dǎo)入了thread類,并且還導(dǎo)入了time模塊。為了創(chuàng)建一個(gè)新的線程,我們創(chuàng)建了一個(gè) te Thread類的對(duì)象。它采用以下參數(shù):
target:線程將要執(zhí)行的功能。
args:要傳遞給目標(biāo)函數(shù)的參數(shù)。我們可以傳遞多個(gè)用逗號(hào)分隔的參數(shù)。
在上面的例子中,我們創(chuàng)建了兩個(gè)具有不同目標(biāo)函數(shù)的線程,即thread1(i)和thread2(i)。
為了開始一個(gè)線程,我們使用了Thread類的start()方法。
我們還使用了time模塊的time.sleep()方法暫停thread1的執(zhí)行 3 秒鐘。
一旦線程啟動(dòng),當(dāng)前程序(您可以將其視為主線程)也會(huì)繼續(xù)執(zhí)行。為了防止主程序在線程執(zhí)行完成之前完成其執(zhí)行,我們使用join()方法。
因此,當(dāng)前程序?qū)⒌却?code>t1和t2的完成,并且只有在它們的執(zhí)行完成之后,當(dāng)前程序的剩余語句才會(huì)被執(zhí)行,即語句print('Execution completed.')。
在注釋掉第 16、17 行的代碼后,您應(yīng)該嘗試運(yùn)行上面的代碼一次,我們使用join方法查看結(jié)果。
至此,我們對(duì) python 多線程的基本介紹已經(jīng)完成,現(xiàn)在我們知道如何在 python 中創(chuàng)建和啟動(dòng)多線程。
分享標(biāo)題:Python多線程介紹
文章起源:http://www.5511xx.com/article/dhssced.html


咨詢
建站咨詢
