日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Python多線程介紹

在本教程中,我們將向您介紹多線程的概念,以及如何用 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