創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!
創(chuàng)新互聯(lián)建站長期為超過千家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網生態(tài)環(huán)境。為上栗企業(yè)提供專業(yè)的成都網站設計、做網站、成都外貿網站建設公司,上栗網站改版等技術服務。擁有10年豐富建站經驗和眾多成功案例,為您定制開發(fā)。什么是Python線程?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
Python線程
進程有很多優(yōu)點,它提供了多道編程,可以提高計算機CPU的利用率。既然進程這么優(yōu)秀,為什么還要線程呢?其實,仔細觀察就會發(fā)現進程還是有很多缺陷的。
主要體現在一下幾個方面:
進程只能在一個時間做一個任務,如果想同時做兩個任務或多個任務,就必須開啟多個進程去完成多個任務。
進程在執(zhí)行的過程中如果阻塞,例如等待輸入,整個進程就會掛起,即使進程中有些工作不依賴于輸入的數據,也將無法執(zhí)行。
每個進程都有自己的獨立空間,所以多進程的創(chuàng)建,銷毀相比于多線程更加耗時,也更加占用系統(tǒng)資源。
進程是資源分配的最小單位,線程是CPU調度的最小單位,每一個進程中至少有一個線程?!?/p>
線程與進程的區(qū)別
可以歸納為以下4點:
1)地址空間:進程間相互獨立的每個進程都有自己獨立的內存空間,也就是說一個進程內的數據在另一個進程是不可見的。但同一進程中的各線程間數據是共享的。
2)通信:由于每個進程有自己獨立的內存空間,所以進程間通信需要IPC,而進程內的數據對于多個線程來說是共享的,每個線程都可以訪問,所以為了保證數據的一致性,需要使用鎖。
3)調度和切換:線程上下文切換比進程上下文切換要快得多。
4)在多線程操作系統(tǒng)中,進程不是一個可執(zhí)行的實體,它主要的功能是向操作系統(tǒng)申請一塊內存空間,然后在內存空間中開線程來執(zhí)行任務,相當于一個容器,容器中的線程才是真正的執(zhí)行體。一個進程可以包含多個線程,而一個線程是不能包含進程的。因為進程是系統(tǒng)分配資源的最小單位,所以線程不能向操作系統(tǒng)申請自己的空間,但一個線程內可以包含多個線程。
線程的特點:
在多線程的操作系統(tǒng)中,通常是在一個進程中包括多個線程,每個線程都是作為利用CPU的基本單位,是花費最小開銷的實體。線程具有以下屬性。
1)輕型實體
線程中的實體基本上不擁有系統(tǒng)資源,只是有一點必不可少的、能保證獨立運行的資源。
線程的實體包括程序、數據和TCB。線程是動態(tài)概念,它的動態(tài)特性由線程控制塊TCB(Thread Control Block)描述。
2)獨立調度和分派的基本單位。
在多線程OS中,線程是能獨立運行的基本單位,因而也是獨立調度和分派的基本單位。由于線程很“輕”,故線程的切換非常迅速且開銷?。ㄔ谕贿M程中的)。
3)共享進程資源。
在同一進程中的各個線程,都可以共享該進程所擁有的資源,這首先表現在:所有線程都具有相同的進程id,這意味著,線程可以訪問該進程的每一個內存資源;此外,還可以訪問進程所擁有的已打開文件、定時器、信號量機構等。由于同一個進程內的線程共享內存和文件,所以線程之間互相通信不必調用內核。
4)可并發(fā)執(zhí)行
在一個進程中的多個線程之間,可以并發(fā)執(zhí)行,甚至允許在一個進程中所有線程都能并發(fā)執(zhí)行;同樣,不同進程中的線程也能并發(fā)執(zhí)行,充分利用和發(fā)揮了處理機與外圍設備并行工作的能力。
線程的實現可以分為兩類:
用戶級線程(User-Level Thread)和內核級線程(Kernel-Level Thread),后者又稱為內核支持的線程或輕量級進程。在多線程操作系統(tǒng)中,各個系統(tǒng)的實現方式并不相同,在有的系統(tǒng)中實現了用戶級線程,有的系統(tǒng)中實現了內核級線程。
用戶線程和內核線程的區(qū)別:
1、內核支持線程是OS內核可感知的,而用戶級線程是OS內核不可感知的。
2、用戶級線程的創(chuàng)建、撤消和調度不需要OS內核的支持,是在語言(如Java)這一級處理的;而內核支持線程的創(chuàng)建、撤消和調度都需OS內核提供支持,而且與進程的創(chuàng)建、撤消和調度大體是相同的。
3、用戶級線程執(zhí)行系統(tǒng)調用指令時將導致其所屬進程被中斷,而內核支持線程執(zhí)行系統(tǒng)調用指令時,只導致該線程被中斷。
4、在只有用戶級線程的系統(tǒng)內,CPU調度還是以進程為單位,處于運行狀態(tài)的進程中的多個線程,由用戶程序控制線程的輪換運行;在有內核支持線程的系統(tǒng)內,CPU調度則以線程為單位,由OS的線程調度程序負責線程的調度。
5、用戶級線程的程序實體是運行在用戶態(tài)下的程序,而內核支持線程的程序實體則是可以運行在任何狀態(tài)下的程序。
內核線程的優(yōu)缺點:
優(yōu)點:當有多個處理機時,一個進程的多個線程可以同時執(zhí)行。
缺點:由內核進行調度。
用戶線程的優(yōu)缺點:
優(yōu)點:
線程的調度不需要內核直接參與,控制簡單。
可以在不支持線程的操作系統(tǒng)中實現。
創(chuàng)建和銷毀線程、線程切換代價等線程管理的代價比內核線程少得多。
允許每個進程定制自己的調度算法,線程管理比較靈活。
線程能夠利用的表空間和堆棧空間比內核級線程多。
同一進程中只能同時有一個線程在運行,如果有一個線程使用了系統(tǒng)調用而阻塞,那么整個進程都會被掛起。另外,頁面失效也會產生同樣的問題。
缺點:
資源調度按照進程進行,多個處理機下,同一個進程中的線程只能在同一個處理機下分時復用。
關于什么是Python線程問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)-成都網站建設公司行業(yè)資訊頻道了解更多相關知識。
當前名稱:什么是Python線程-創(chuàng)新互聯(lián)
網頁路徑:http://redsoil1982.com.cn/article34/dcdspe.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供企業(yè)網站制作、網站設計、網站導航、響應式網站、ChatGPT、品牌網站建設
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)