欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python并發(fā)編程多進(jìn)程 互斥鎖原理解析

 更新時間:2019年08月20日 14:50:48   作者:minger_lcm  
這篇文章主要介紹了python并發(fā)編程多進(jìn)程 互斥鎖原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

運行多進(jìn)程 每個子進(jìn)程的內(nèi)存空間是互相隔離的 進(jìn)程之間數(shù)據(jù)不能共享的

互斥鎖

但是進(jìn)程之間都是運行在一個操作系統(tǒng)上,進(jìn)程之間數(shù)據(jù)不共享,但是共享同一套文件系統(tǒng),所以訪問同一個文件,或同一個打印終端,

是可以的,而共享帶來的是競爭,競爭帶來的結(jié)果就是錯亂

#并發(fā)運行,效率高,但競爭同一打印終端,帶來了打印錯亂
from multiprocessing import Process
import time
def task(name):
  print("%s 1" % name)
  time.sleep(1)
  print("%s 2" % name)
  time.sleep(1)
  print("%s 3" % name)
if __name__ == '__main__':
  for i in range(3):
    p = Process(target=task, args=("子進(jìn)程%s" % i,))
    p.start()
'''
子進(jìn)程2 1
子進(jìn)程0 1
子進(jìn)程1 1
子進(jìn)程2 2
子進(jìn)程1 2
子進(jìn)程0 2
子進(jìn)程2 3
子進(jìn)程1 3
子進(jìn)程0 3
'''

如何控制,就是加鎖處理。而互斥鎖的意思就是互相排斥,如果把多個進(jìn)程比喻為多個人,

互斥鎖的工作原理就是多個人都要去爭搶同一個資源:衛(wèi)生間,一個人搶到衛(wèi)生間后上一把鎖,其他人都要等著,等到這個完成任務(wù)后釋放鎖,其他人才有可能有一個搶到......

所以互斥鎖的原理,就是把并發(fā)改成串行,降低了效率,但保證了數(shù)據(jù)安全,不錯亂

加了互斥鎖就沒有并發(fā)效果了 加上鎖只有一個可以運行 互斥鎖會把并發(fā)變成串行 效率變低了

解決:

導(dǎo)入模塊 Lock

現(xiàn)在程序啟動 所有進(jìn)程首先會去搶鎖 只有搶到鎖的才能運行

等這個進(jìn)程運行完了解鎖后 再到其他進(jìn)程繼續(xù)搶鎖

from multiprocessing import Process, Lock
import time
def task(name, mutex):
  # 加鎖
  mutex.acquire()
  print("%s 1" % name)
  time.sleep(1)
  print("%s 2" % name)
  time.sleep(1)
  print("%s 3" % name)
  # 把鎖拆了
  mutex.release()
if __name__ == '__main__':
  # 建一個對象實例
  mutex = Lock()
  for i in range(3):
    # 把鎖傳給子進(jìn)程 讓所有子進(jìn)程用同一把鎖
    p = Process(target=task, args=("子進(jìn)程%s" % i, mutex))
    p.start()
'''
現(xiàn)在程序啟動 所有進(jìn)程首先會去搶鎖 只有搶到鎖的才能運行
等這個進(jìn)程運行完了解鎖后 再到其他進(jìn)程繼續(xù)搶鎖
'''
'''
子進(jìn)程0 1
子進(jìn)程0 2
子進(jìn)程0 3
子進(jìn)程1 1
子進(jìn)程1 2
子進(jìn)程1 3
子進(jìn)程2 1
子進(jìn)程2 2
子進(jìn)程2 3
'''

犧牲了效率,保證數(shù)據(jù)不錯亂

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python多進(jìn)程共享numpy 數(shù)組的方法

    Python多進(jìn)程共享numpy 數(shù)組的方法

    這篇文章主要介紹了Python多進(jìn)程共享numpy 數(shù)組的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • pygame庫實現(xiàn)移動底座彈球小游戲

    pygame庫實現(xiàn)移動底座彈球小游戲

    這篇文章主要為大家詳細(xì)介紹了pygame庫實現(xiàn)移動底座彈球小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python urls.py的三種配置寫法實例詳解

    Python urls.py的三種配置寫法實例詳解

    這篇文章主要介紹了Python urls.py的三種配置寫法實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Python使用getpass庫讀取密碼的示例

    Python使用getpass庫讀取密碼的示例

    本篇文章主要介紹了Python使用getpass庫讀取密碼的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • python tkinter實現(xiàn)彩球碰撞屏保

    python tkinter實現(xiàn)彩球碰撞屏保

    這篇文章主要為大家詳細(xì)介紹了python tkinter實現(xiàn)彩球碰撞屏保,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python真題案例之最長回文子串 周期串詳解

    Python真題案例之最長回文子串 周期串詳解

    今天來記錄一下字符串處理中常見到的回文子串與周期串問題。使用的語言是Python優(yōu)雅的處理字符串是程序員不可或缺的技能,快來一起學(xué)習(xí)吧
    2022-03-03
  • Python解壓 rar、zip、tar文件的方法

    Python解壓 rar、zip、tar文件的方法

    這篇文章主要介紹了Python解壓 rar、zip、tar文件的方法,文中通過實例代碼給大家介紹了python 解壓文件壓縮文件的方法,需要的朋友參考下吧
    2019-11-11
  • python獲取android設(shè)備的GPS信息腳本分享

    python獲取android設(shè)備的GPS信息腳本分享

    這篇文章主要介紹了python獲取android設(shè)備的GPS信息腳本分享,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03
  • Pandas merge合并兩個DataFram的實現(xiàn)

    Pandas merge合并兩個DataFram的實現(xiàn)

    本文主要介紹了Pandas merge合并兩個DataFram的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Python中的星號*還能這么用你知道嗎

    Python中的星號*還能這么用你知道嗎

    這篇文章主要為大家詳細(xì)介紹了Python中的星號*用法的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-06-06

最新評論