日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python簡(jiǎn)單進(jìn)程鎖代碼實(shí)例

系統(tǒng) 1674 0

先說說線程

在多線程中,為了保證共享資源的正確性,我們常常會(huì)用到線程同步技術(shù).
將一些敏感操作變成原子操作,保證同一時(shí)刻多個(gè)線程中只有一個(gè)線程在執(zhí)行這個(gè)原子操作。
我最常用的是互斥鎖,也稱獨(dú)占鎖。其次還有讀寫鎖,信號(hào)量,條件變量等。
除此之外,我們?cè)谶M(jìn)程間通信時(shí)會(huì)用到信號(hào),向某一個(gè)進(jìn)程發(fā)送信號(hào),該進(jìn)程中設(shè)置信號(hào)處理函數(shù),然后當(dāng)該進(jìn)程收到信號(hào)時(shí),執(zhí)行某些操作。
其實(shí)在線程中,也可以接受信號(hào),利用這種機(jī)制,我們也可以用來實(shí)現(xiàn)線程同步。更多信息見 //www.jb51.net/article/64977.htm

再說說進(jìn)程

進(jìn)程里我們通過一些進(jìn)程間通信方式,可以實(shí)現(xiàn)進(jìn)程間的同步。
最近我遇到的一個(gè)情況是,某采集系統(tǒng)進(jìn)程池中很多進(jìn)程會(huì)向同一個(gè)日志文件中打印日志,如果通過進(jìn)程間通信實(shí)現(xiàn),比較麻煩。
還有一種辦法,如果采用共享內(nèi)存的方式,不同的進(jìn)程分別將日志消息通過共享內(nèi)存放入一個(gè)線程安全的隊(duì)列中,再建立一個(gè)進(jìn)程負(fù)責(zé)專門打印日志,這樣也可以保證不被大亂,
保證日志的正確性,但代碼量也很多阿。
還有一種辦法,在共享內(nèi)存中設(shè)置一個(gè)互斥鎖,所有進(jìn)程共享。
如果能像線程一樣,有一個(gè)簡(jiǎn)單的互斥鎖,用的時(shí)候只要加鎖,就能實(shí)現(xiàn)進(jìn)程間的互斥就好了。之前對(duì)文件加鎖,也有些印象,于是我用它實(shí)現(xiàn)了一個(gè)進(jìn)程間的互斥鎖

            
#coding=utf-8 
 
""" 
Process mutex lock. 
Actually it is implemented by file lock. 
""" 
 
import fcntl 
 
class ProcessLock(object): 
 
    __lockfd = None 
 
    @staticmethod 
    def lock(): 
        ProcessLock.__lockfd = open(__file__, 'a+') 
        fcntl.flock(ProcessLock.__lockfd, fcntl.LOCK_EX) 
 
    @staticmethod 
    def unlock(): 
        fcntl.flock(ProcessLock.__lockfd, fcntl.LOCK_UN) 

          


加鎖? ProcessLock.lock()
釋放 ProcessLock.unlock()
非常簡(jiǎn)單使用,有興趣的朋友可以試一試。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 阿坝县| 通化县| 湖南省| 射阳县| 贺州市| 浦县| 安义县| 沂源县| 四子王旗| 咸阳市| 清远市| 阿尔山市| 中西区| 台南市| 松溪县| 洛浦县| 沁水县| 大田县| 高雄县| 顺昌县| 樟树市| 湟源县| 贡觉县| 深水埗区| 中西区| 阳曲县| 囊谦县| 嘉义县| 贡嘎县| 来宾市| 舟山市| 海淀区| 汉沽区| 交城县| 通渭县| 阆中市| 齐河县| 阜新| 汝阳县| 克拉玛依市| 庆元县|