国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

多線程、協(xié)程和多進(jìn)程并發(fā)編程

這篇具有很好參考價值的文章主要介紹了多線程、協(xié)程和多進(jìn)程并發(fā)編程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

37.1 如何通俗理解線程和進(jìn)程?
進(jìn)程:進(jìn)程就是正在執(zhí)?的程序。
線程:是程序執(zhí)?的?條路徑, ?個進(jìn)程中可以包含多條線程。
通俗理解:例如你打開抖?,就是打開?個進(jìn)程,在抖???和朋友聊天就是開啟了?條線程。
再舉?個例?:
在某?堂打飯的時候,此?堂安排三個打飯?媽打飯,所有同學(xué)依次排成三個隊伍,每個打飯? 媽相當(dāng)于?個線程。
這個?堂相當(dāng)于?個進(jìn)程,他?共有三個打飯?媽,相當(dāng)于進(jìn)程?有三個線程。
兩者之間的關(guān)系:
?個進(jìn)程??可以有多條線程,?少有?條線程。
?條線程?定會在?個進(jìn)程??。
關(guān)于協(xié)程我會放在后?講完線程和進(jìn)程時再講解。

37.2 Python如何啟動?個線程?
?般的,程序默認(rèn)執(zhí)?只在?個線程,這個線程稱為主線程,例?演示如下:
導(dǎo)?線程相關(guān)的模塊 threading:

 import threadin

threading的類?法 current_thread()返回當(dāng)前線程:

 t = threading.current_thread()
 print(t)

看到 MainThread,驗證了程序默認(rèn)是在MainThead中執(zhí)?。
t.getName()獲得這個線程的名字
其他常??法,t.ident獲得線程id
is_alive() 判斷線程是否存活
那么,如何創(chuàng)建??的線程呢?
下?節(jié)課我們了解:如何在Python中創(chuàng)建?個新線程

 my_thread = threading.Thread()
 

創(chuàng)建線程的?的是告訴它幫助我們做些什么,做些什么通過參數(shù)target傳?,參數(shù)類型為 callable,函數(shù)就是可調(diào)?的

 def print_i(end):
      for i in range(end):
               print(f'打印i={i}')
my_thread = threading.Thread(target=print_i, args=(10,))

my_thread線程已經(jīng)全副武裝,但是我們得按下發(fā)射按鈕,啟動start(),它才開始真正起?。
my_thread.start()
打印結(jié)果如下,其中args指定函數(shù)print_i需要的參數(shù)i,類型為元祖。
打印i=0 打印i=1 打印i=2 打印i=3 打印i=4 打印i=5 打印i=6 打印i=7 打印i=8 打印i=9
?此,多線程相關(guān)的核?知識點,已經(jīng)總結(jié)完畢。但是,僅僅知道這些,還不夠!光紙上談兵, 當(dāng)然遠(yuǎn)遠(yuǎn)不夠。

37.4 【案例】如何理解多線程的?作(交替獲得時間 ?)?
為了更好解釋多線程之間的?作,開辟3個線程,裝到threads中

 import time from datetime import datetime import threading 
 
 
def print_time():     for _ in range(5): # 在 每 個 線 程 中 打 印 5 次
         time.sleep(0.1) # 模 擬打 印 前 的相 關(guān) 處 理 邏輯
         print('當(dāng)前線程%s,打印結(jié)束時間為:%s'%(threading.current_thread().getName(
 
 
threads = [threading.Thread(name='t%d'%(i,),target=print_time) for i in range(3)]
 [t.start() for t in threads]

打印結(jié)果如下,t0,t1,t2三個線程,根據(jù)操作系統(tǒng)的調(diào)度算法,輪詢獲得CPU時間?,注意觀察:

37.5 【案例】如何理解多線程搶奪同?個變量?
多線程編程,存在搶奪同?個變量的問題。
?如下?例?,創(chuàng)建的10個線程同時競爭全局變量 a :文章來源地址http://www.zghlxwxcb.cn/news/detail-431043.html

 import threading 
 
 
a = 0 
def add1():
     global a
     a += 1
     print('%s  adds a to 1: %d'%(threading.current_thread().getName(),a))
threads = [threading.Thread(name='t%d'%(i,),target=add1) for i in range(10)] [t.start() for t in threads] 

到了這里,關(guān)于多線程、協(xié)程和多進(jìn)程并發(fā)編程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Java 并發(fā)編程】一文讀懂線程、協(xié)程、守護(hù)線程

    【Java 并發(fā)編程】一文讀懂線程、協(xié)程、守護(hù)線程

    在 Java 線程的生命周期一文中提到了 就緒狀態(tài)的線程在獲得 CPU 時間片后變?yōu)檫\行中狀態(tài) ,否則就會在 可運行狀態(tài) 或者 阻塞狀態(tài) ,那么系統(tǒng)是如何分配線程時間片以及實現(xiàn)線程的調(diào)度的呢?下面我們就來講講線程的調(diào)度策略。 線程調(diào)度是指系統(tǒng)為線程分配 CPU 執(zhí)行時間片

    2023年04月08日
    瀏覽(24)
  • 【Python】多線程編程 ① ( 線程相關(guān)概念 | 進(jìn)程 | 線程 | 協(xié)程 / 纖程 | 管程 )

    進(jìn)程 與 操作系統(tǒng) : 進(jìn)程 是 操作系統(tǒng) 中 能夠獨立運行的單元 , 是 操作系統(tǒng) 對 正在運行的 應(yīng)用程序 的 抽象結(jié)構(gòu) 描述 ; 操作系統(tǒng) 中 運行的每個 應(yīng)用程序 就是一個進(jìn)程 ; 一個操作系統(tǒng)中可以運行 多個 進(jìn)程 ; 每個 應(yīng)用程序 都會被 操作系統(tǒng) 分配一個 進(jìn)程 ID ; 多個進(jìn)程之間

    2024年02月15日
    瀏覽(24)
  • Python滲透測試編程基礎(chǔ)——線程、進(jìn)程與協(xié)程

    Python滲透測試編程基礎(chǔ)——線程、進(jìn)程與協(xié)程

    目錄 ?一、進(jìn)程與線程的概念 1.進(jìn)程 2.線程 3.進(jìn)程和線程的關(guān)系 4.任務(wù)執(zhí)行方式 二、Python中的Threading模塊 1.線程模塊介紹 2.Threading介紹 (1)方法和屬性 (2)類方法 三、線程簡單編寫 1.流程 2.創(chuàng)建線程 (1)方法一 (2)方法二 3.例子 四、守護(hù)線程 五、線程同步技術(shù) 1.線程

    2024年02月01日
    瀏覽(25)
  • 多線程|多進(jìn)程|高并發(fā)網(wǎng)絡(luò)編程

    多線程|多進(jìn)程|高并發(fā)網(wǎng)絡(luò)編程

    多進(jìn)程并發(fā)服務(wù)器是一種經(jīng)典的服務(wù)器架構(gòu),它通過創(chuàng)建多個子進(jìn)程來處理客戶端連接,從而實現(xiàn)并發(fā)處理多個客戶端請求的能力。 概念: 服務(wù)器啟動時,創(chuàng)建主進(jìn)程,并綁定監(jiān)聽端口。 當(dāng)有客戶端連接請求時,主進(jìn)程接受連接,并創(chuàng)建一個子進(jìn)程來處理該客戶端連接。

    2024年02月07日
    瀏覽(21)
  • JUC并發(fā)編程學(xué)習(xí)筆記(一)認(rèn)知進(jìn)程和線程

    進(jìn)程 一個程序,如QQ.exe,是程序的集合 一個進(jìn)程往往可以包含多個線程,至少包含一個 java默認(rèn)有兩個線程,GC垃圾回收線程和Main線程 線程:一個進(jìn)程中的各個功能 java無法真正的開啟線程,因為java是運行在虛擬機上的,所以只能通過C++,通過native本地方法調(diào)用C++開啟線程

    2024年02月06日
    瀏覽(95)
  • python-16-線程池和進(jìn)程池python并發(fā)編程

    python-16-線程池和進(jìn)程池python并發(fā)編程

    Python ThreadPoolExecutor線程池 線程池的基本原理是什么? 利用Python快速實現(xiàn)一個線程池,非常簡單 Python并發(fā)編程專題 一、為什么要引入并發(fā)編程? 場景1:一個網(wǎng)絡(luò)爬蟲,按順序爬取花了1小時,采用并發(fā)下載減少到20分鐘! 場景2:一個APP應(yīng)用,優(yōu)化前每次打開頁面需要3秒,采

    2024年02月04日
    瀏覽(43)
  • Linux網(wǎng)絡(luò)編程:多進(jìn)程 多線程_并發(fā)服務(wù)器

    文章目錄: 一:wrap常用函數(shù)封裝 wrap.h? wrap.c server.c封裝實現(xiàn) client.c封裝實現(xiàn) 二:多進(jìn)程process并發(fā)服務(wù)器 server.c服務(wù)器 實現(xiàn)思路 代碼邏輯? client.c客戶端 三:多線程thread并發(fā)服務(wù)器 server.c服務(wù)器 實現(xiàn)思路 代碼邏輯? client.c客戶端 ???? ??read 函數(shù)的返回值 wrap.h? wrap

    2024年02月12日
    瀏覽(31)
  • Python中的并發(fā)編程:多線程與多進(jìn)程的比較【第124篇—多線程與多進(jìn)程的比較】

    Python中的并發(fā)編程:多線程與多進(jìn)程的比較【第124篇—多線程與多進(jìn)程的比較】

    在Python編程領(lǐng)域中,處理并發(fā)任務(wù)是提高程序性能的關(guān)鍵之一。本文將探討Python中兩種常見的并發(fā)編程方式:多線程和多進(jìn)程,并比較它們的優(yōu)劣之處。通過代碼實例和詳細(xì)的解析,我們將深入了解這兩種方法的適用場景和潛在問題。 多線程是一種輕量級的并發(fā)處理方式,適

    2024年03月14日
    瀏覽(20)
  • 計算機網(wǎng)絡(luò)編程 | 并發(fā)服務(wù)器代碼實現(xiàn)(多進(jìn)程/多線程)

    計算機網(wǎng)絡(luò)編程 | 并發(fā)服務(wù)器代碼實現(xiàn)(多進(jìn)程/多線程)

    歡迎關(guān)注博主 Mindtechnist 或加入【Linux C/C++/Python社區(qū)】一起學(xué)習(xí)和分享Linux、C、C++、Python、Matlab,機器人運動控制、多機器人協(xié)作,智能優(yōu)化算法,濾波估計、多傳感器信息融合,機器學(xué)習(xí),人工智能等相關(guān)領(lǐng)域的知識和技術(shù)。 專欄:《網(wǎng)絡(luò)編程》 當(dāng)涉及到構(gòu)建高性能的服務(wù)

    2024年02月08日
    瀏覽(35)
  • Linux中 socket編程中多進(jìn)程/多線程TCP并發(fā)服務(wù)器模型

    一次只能處理一個客戶端的請求,等這個客戶端退出后,才能處理下一個客戶端。 缺點:循環(huán)服務(wù)器所處理的客戶端不能有耗時操作。 模型 源碼 可以同時處理多個客戶端請求 父進(jìn)程 / 主線程專門用于負(fù)責(zé)連接,創(chuàng)建子進(jìn)程 / 分支線程用來與客戶端交互。 模型 源碼 模型 源

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包