日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Day 31 并发编程

發(fā)布時間:2025/7/14 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Day 31 并发编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • 并發(fā)編程
    • 并發(fā)和串行
    • 學習并發(fā)的目的
    • 進程是什么
    • 操作系統(tǒng)是什么
    • 操作系統(tǒng)發(fā)展史
      • 第二代計算使用的是批處理系統(tǒng),存在以下三個問題
      • 第三代計算機
      • 第四代計算機
    • 多道技術
    • 并發(fā)編程中的重要概念
    • python如何使用多進程
      • 1. 導入multiprocessing中的Process類 實例化這個類 指定要執(zhí)行的任務target
      • 2. 導入multiprocessing中的Process類 繼承這個類 覆蓋run方法 將要執(zhí)行的任務放入run中開啟進程是會自動執(zhí)行該函數(shù)
      • 進程之間內存相互隔離
      • join函數(shù)
      • 進程對象的常用屬性
      • 僵尸進程和孤兒進程

并發(fā)編程

并發(fā)和串行

  • 程序默認的執(zhí)行方式是串行,即程序自上而下一行一行執(zhí)行,必須把當前任務執(zhí)行完畢才能執(zhí)行下一個任務

學習并發(fā)的目的

就是編寫可以同時執(zhí)行多個任務的程序,從而提高效率

串行和并發(fā)都是程序處理任務的方式

## 實現(xiàn)并發(fā)的方式

  • 多進程
  • 多線程
  • 協(xié)程
  • 進程是什么

    進程是指正在運行的程序,是操作系統(tǒng)調度以及進行資源分配的基本單位

    當程序從硬盤讀取到內存中運行的時候進程就產(chǎn)生了

    多進程:指的是同一時間有多個程序被裝入內存并執(zhí)行

    多進程的實現(xiàn)原理其實就是操作系統(tǒng)調度進程的原理

    操作系統(tǒng)是什么

    操作系統(tǒng)就是一款特殊的軟件

    操作系統(tǒng)和普通軟件的區(qū)別:

  • 操作系統(tǒng)可以直接與硬件交互
  • 操作系統(tǒng)是受保護的,不能直接被修改
  • 操作系統(tǒng)更加長壽,一旦完成基本不會修改,如系統(tǒng)內核
  • 操作系統(tǒng)的主要功能

  • 隱藏了硬件復雜的操作,提供了簡單的api接口
  • 將硬件的資源競爭變得有序可控
  • GUI圖形化用戶界面

    操作系統(tǒng)發(fā)展史

    掌握多道技術的實現(xiàn)原理,就是多進程的實現(xiàn)原理

    第二代計算使用的是批處理系統(tǒng),存在以下三個問題

  • 需要人為參與
  • 任務串行執(zhí)行
  • 程序員調試效率低
  • 第三代計算機

  • 使用SPOOLING聯(lián)機計數(shù)

  • 多道技術
  • 多終端多用戶

  • 第四代計算機

    大規(guī)模集成電路+多用戶多終端

    特點:具備GUI圖形化界面,普通人也可以使用

    多道技術

    實現(xiàn)原理:

  • 空間復用

    ? 同一時間加載多個任務到內存中,多個進程之間的內存區(qū)域需要相互隔離,這種隔離是物理隔離,為了保證數(shù)據(jù)安全性

  • 時間復用

    ? 操作系統(tǒng)會在多個進程之間做切換

    ? 切換進程的兩種情況:

    ? 1.但給一個進程遇到IO操作時會自動切換

    ? 2.當任務執(zhí)行時間過長(超時)強制切換

    ? 切換進程前需要記錄當前進程的狀態(tài),同時頻繁的切換也消耗系統(tǒng)資源

    ? 當所有任務沒有IO操作時,切換執(zhí)行反而降低了效率,但是為了保證并發(fā)執(zhí)行必須要犧牲效率

  • 多道技術總結:切換+保存

    有了多道技術,計算機就可以同時并發(fā)處理多個任務

    并發(fā)編程中的重要概念

    串行:從上到下依次執(zhí)行

    并發(fā):多個任務同時執(zhí)行,本質是多個進行不斷在切換,由于切換速度快,所以感覺是同時運行

    并行:真正意義上的同時運行,有幾個核心就能并行幾個任務,如果超過核心數(shù)就使用并發(fā)執(zhí)行

    以上三個都是用于描述處理任務的方式

    一個進程的三種狀態(tài)

    阻塞:當程序遇到IO操作,無法繼續(xù)執(zhí)行代碼時的一種狀態(tài)

    非阻塞 :程序沒有遇到IO操作的狀態(tài),正常運行

    就緒:程序等待CPU運行

    阻塞非阻塞也可以用來描述執(zhí)行任務的方式

    三種狀態(tài)的互相切換

    程序正常運行,當運行時間超過閾值,會進入就緒狀態(tài),等待cpu執(zhí)行完其他的進程后,恢復到運行狀態(tài)繼續(xù)執(zhí)行

    當程序遇到IO操作,會進入阻塞狀態(tài),當結束阻塞狀態(tài)后,程序會進入就緒狀態(tài),等待cpu空閑后繼續(xù)執(zhí)行本程序

    野指針和僵尸指針

    野指針:內存中的地址被刪除

    僵尸指針:內存中的地址因為某種原因沒有被清除

    進程的創(chuàng)建和銷毀

    創(chuàng)建:

  • 用戶交互式請求
  • 有一個正在運行的程序調用了開啟進程的接口
  • 一個批處理作業(yè)開始
  • 系統(tǒng)初始化
  • 銷毀:

  • 任務完成
  • 強制結束 windows:taskkill/linux:kill
  • 程序異常
  • 進程和程序

    程序是一堆代碼存放在文件中

    進程就是程序中的代碼從硬盤讀入內存后產(chǎn)生的

    進程是由程序產(chǎn)生的

    一個程序可以產(chǎn)生多個進程,每一個進程都有一個唯一的PID

    進程的層次結構

    在linux中進程具備父子關系,是一個樹狀結構,可以相互查找到對方

    在windows中,沒有層級關系,父進程可轉讓子進程的句柄

    父進程與子進程:例如qq打開了瀏覽器,qq就是父進程,瀏覽器就是子進程

    PID和PPID

    PID是當前進程的編號

    PPID是當前程序的父進程的編號

    我們運行py文件的時候其實是運行python解釋器,所以運行py文件的父進程就是python解釋器

    import os os.getpid() os.getppid()

    python如何使用多進程

    1. 導入multiprocessing中的Process類 實例化這個類 指定要執(zhí)行的任務target

    import os from multiprocessing import Processdef task():print("this is sub process")print(f"sub process id {os.getpid()}" )if __name__ == '__main__':p = Process(target=task)p.start() print("this is parent process")print(f"parent process is: {os.getpid()}")print("over")

    linux和windows開啟進程的方式區(qū)別

    linux會將父進程的內存數(shù)完整復制一份給子進程

    windows會導入父進程的代碼,從新執(zhí)行一遍,來獲取需要處理的任務,所以在編寫代碼時如果是windows,需要把開啟進程的代碼放在main判斷中

    2. 導入multiprocessing中的Process類 繼承這個類 覆蓋run方法 將要執(zhí)行的任務放入run中開啟進程是會自動執(zhí)行該函數(shù)

    from multiprocessing import Process import osclass Downloader(Process):def __init__(self,url,size,name):super().__init__()self.url = urlself.size = sizeself.name = namedef run(self):print(os.getpid())passif __name__ == '__main__':m = Downloader()m.start()print("parent over",os.getpid())

    進程之間內存相互隔離

    from multiprocessing import Process import os,timea = 257def task():global aprint("2",a,id(a))a = 200if __name__ == '__main__':p = Process(target=task)p.start() time.sleep(4)print(a)

    join函數(shù)

    就是讓主進程等待子進程運行完再執(zhí)行

    from multiprocessing import Process import timedef task1(name):for i in range(10000):print(f'{name} run')def task2(name):for i in range(100):print(f'{name} run')if __name__ == '__main__': p1 = Process(target=task1,args=("p1",))# args 是給子進程傳遞的參數(shù) 必須是元組p1.start() p2 = Process(target=task2,args=("p2",))p2.start() p2.join() p1.join()print("over")

    進程對象的常用屬性

    if __name__ == '__main__':p = Process(target=task,name="老司機進程")p.start()# p.join()# print(p.name)# p.daemon #守護進程# p.join()# print(p.exitcode) # 獲取進程的退出碼 就是exit()函數(shù)中傳入的值# print(p.is_alive()) # 查看進程是否存活# print("zi",p.pid) # 獲取進程id# print(os.getpid())# p.terminate() #終止進程 與strat 相同的是 不會立即終止,因為操作系統(tǒng)有很多事情要做 # print(p.is_alive())

    僵尸進程和孤兒進程

    孤兒進程:當父進程已經(jīng)結束,而子進程還在運行,子進程就成為孤兒進程,孤兒進程有其存在的意義,沒有不良影響,孤兒進程會被操作系統(tǒng)接管

    僵尸進程:當一個進程已經(jīng)結束了,但是他仍然還有一些數(shù)據(jù)存在,此時稱之為僵尸進程

    在linux中,有這么一個機制,父進程無論什么時候都可以獲取到子進程的一些數(shù)據(jù);子進程任務執(zhí)行完畢后,確實結束了但是仍然保留了一些數(shù)據(jù),目的是為了讓父進程能夠獲取這些信息;linux中,可以調用waitpid來徹底清除子進程的殘留信息

    python中已經(jīng)封裝了處理僵尸進程的操作

    轉載于:https://www.cnblogs.com/masterjian924/p/11124038.html

    總結

    以上是生活随笔為你收集整理的Day 31 并发编程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产午夜精品在线 | 欧洲精品在线播放 | 精品国产一二三区 | 亚洲美女av在线 | 久久精品视频在线观看 | 免费无码毛片一区二区app | 少妇人妻一区二区三区 | 欧美视频一区二区三区在线观看 | 另类亚洲激情 | 人人草av| 动漫美女被吸奶 | a级黄色影院| 国产无码精品久久久 | 男生操女生逼逼 | 国产调教| 国产精品免费一区二区区 | 国产精品久久国产愉拍 | 香蕉传媒 | 福利二区视频 | 亚洲成人av影片 | 高潮喷水一区二区三区 | 久久青青操 | 日韩天堂视频 | 午夜福利视频一区二区 | 国产一区视频观看 | 免费人成年激情视频在线观看 | 免费黄网在线看 | 亚洲最新偷拍 | 99精品乱码国产在线观看 | 亚洲校园激情 | 国产精品日本一区二区在线播放 | 丁五月 | 日本视频www | 亚洲精品一区二区三 | 精品日韩av | 麻豆av免费| 日本一区二区人妻 | 偷拍自拍一区 | 欧美福利第一页 | 日韩毛片在线播放 | 激情开心站 | 日韩极品一区 | 乱子伦一区二区 | 樱空桃在线 | 久久重口味 | 国产乱偷 | 国产91边播边对白在线 | 欧美一区二区三区成人 | 国产乱淫精品一区二区三区毛片 | 亚洲精品20p | 拔插拔插华人 | 69色| 69精品人妻一区二区三区 | 成人精品国产免费网站 | 亚洲乱色熟女一区二区 | 黄色小视频在线免费看 | 97日韩精品 | 亚洲第一天堂网 | 国产成人精品视频ⅴa片软件竹菊 | 91小视频在线观看 | 亚洲h网站 | 在线中文字幕av | 91天堂在线视频 | 免费的性爱视频 | www.色午夜 | 欧美在线一区视频 | 欧美xxxx18 | 免费av不卡| 男女猛烈无遮挡免费视频 | 欧美精品www | 综合久久99 | 亚洲精品久久久蜜桃 | 综合激情网 | 久久精品视频免费 | 能在线看的av | 精品欧美乱码久久久久久 | 国产免费一区二区三区四区五区 | 狠狠精品干练久久久无码中文字幕 | 福利社av| 国产精自产拍久久久久久蜜 | 亚洲精品成人无码 | 女生隐私免费看 | 亚洲精品国产精品国自产 | 大学生一级一片全黄 | 久久午夜激情 | 免费激情视频网站 | 亚洲羞羞| 久久免费播放视频 | 秋霞影院一区二区 | 短裙公车被强好爽h吃奶视频 | 蜜桃av一区二区三区 | 日本偷偷操 | 欧美亚洲中文精品字幕 | 国产av人人夜夜澡人人爽 | 操丰满女人 | 91麻豆产精品久久久久久 | 熊出没之冬日乐翻天免费高清观看 | av香蕉| www.色综合 |