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

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

 更新時(shí)間:2015年04月27日 10:44:49   投稿:junjie  
這篇文章主要介紹了Python簡(jiǎn)單進(jìn)程鎖代碼實(shí)例,本文講解了線程和進(jìn)程的相關(guān)知識(shí),然后給出了Python的實(shí)現(xiàn)代碼,需要的朋友可以參考下

先說(shuō)說(shuō)線程

在多線程中,為了保證共享資源的正確性,我們常常會(huì)用到線程同步技術(shù).
將一些敏感操作變成原子操作,保證同一時(shí)刻多個(gè)線程中只有一個(gè)線程在執(zhí)行這個(gè)原子操作。
我最常用的是互斥鎖,也稱獨(dú)占鎖。其次還有讀寫(xiě)鎖,信號(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ī)制,我們也可以用來(lái)實(shí)現(xiàn)線程同步。更多信息見(jiàn) http://www.dbjr.com.cn/article/64977.htm

再說(shuō)說(shuō)進(jìn)程

進(jìn)程里我們通過(guò)一些進(jìn)程間通信方式,可以實(shí)現(xiàn)進(jìn)程間的同步。
最近我遇到的一個(gè)情況是,某采集系統(tǒng)進(jìn)程池中很多進(jìn)程會(huì)向同一個(gè)日志文件中打印日志,如果通過(guò)進(jìn)程間通信實(shí)現(xiàn),比較麻煩。
還有一種辦法,如果采用共享內(nèi)存的方式,不同的進(jìn)程分別將日志消息通過(guò)共享內(nèi)存放入一個(gè)線程安全的隊(duì)列中,再建立一個(gè)進(jìn)程負(fù)責(zé)專門(mén)打印日志,這樣也可以保證不被大亂,
保證日志的正確性,但代碼量也很多阿。
還有一種辦法,在共享內(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)單使用,有興趣的朋友可以試一試。

相關(guān)文章

  • Python中Pyspider爬蟲(chóng)框架的基本使用詳解

    Python中Pyspider爬蟲(chóng)框架的基本使用詳解

    這篇文章主要介紹了Python中Pyspider爬蟲(chóng)框架的基本使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 淺談Tensorflow 動(dòng)態(tài)雙向RNN的輸出問(wèn)題

    淺談Tensorflow 動(dòng)態(tài)雙向RNN的輸出問(wèn)題

    今天小編就為大家分享一篇淺談Tensorflow 動(dòng)態(tài)雙向RNN的輸出問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 2023巨詳細(xì)的Python安裝庫(kù)教程(以pycharm和Anaconda安裝pygame為例)

    2023巨詳細(xì)的Python安裝庫(kù)教程(以pycharm和Anaconda安裝pygame為例)

    這篇文章主要給大家介紹了巨詳細(xì)的Python安裝庫(kù)教程,文中以pycharm和Anaconda安裝pygame為例,通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Python編碼解碼之encode()函數(shù)詳解

    Python編碼解碼之encode()函數(shù)詳解

    這篇文章主要給大家介紹了關(guān)于Python編碼解碼之encode()函數(shù)的相關(guān)資料,Python的encode函數(shù)用于將字符串按照指定的編碼方式進(jìn)行編碼,返回一個(gè)bytes類型的對(duì)象,需要的朋友可以參考下
    2023-07-07
  • python求定積分之quad函數(shù)詳解

    python求定積分之quad函數(shù)詳解

    這篇文章主要介紹了python求定積分之quad函數(shù)詳解,SciPy下實(shí)現(xiàn)求函數(shù)的積分的函數(shù)的基本使用,積分,高等數(shù)學(xué)里有大量的講述,基本意思就是求曲線下面積之和,需要的朋友可以參考下
    2023-08-08
  • 配置jupyter notebook全步驟,更改默認(rèn)路徑,jupyter不是問(wèn)題

    配置jupyter notebook全步驟,更改默認(rèn)路徑,jupyter不是問(wèn)題

    這篇文章主要介紹了配置jupyter notebook全步驟,更改默認(rèn)路徑,jupyter不是問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 淺析Python中的弱引用與基礎(chǔ)類型支持情況

    淺析Python中的弱引用與基礎(chǔ)類型支持情況

    最近有一個(gè)業(yè)務(wù)場(chǎng)景需要用Python自行實(shí)現(xiàn)一個(gè)簡(jiǎn)單的LRU cache,不可避免的接觸到了弱引用這一概念,所以下面就來(lái)和大家分享一下相關(guān)的知識(shí)吧
    2023-07-07
  • Python學(xué)習(xí)之字符串函數(shù)使用詳解

    Python學(xué)習(xí)之字符串函數(shù)使用詳解

    Python的友好在于提供了非常好強(qiáng)大的功能函數(shù)模塊,對(duì)于字符串的使用,同樣提供許多簡(jiǎn)單便捷的字符串函數(shù)。Python 字符串自帶了很多有用的函數(shù),快來(lái)跟隨小編學(xué)習(xí)一下這些函數(shù)的應(yīng)用詳解吧
    2021-12-12
  • Pycharm安裝第三方庫(kù)時(shí)Non-zero exit code錯(cuò)誤解決辦法

    Pycharm安裝第三方庫(kù)時(shí)Non-zero exit code錯(cuò)誤解決辦法

    這篇文章主要介紹了Pycharm安裝第三方庫(kù)時(shí)Non-zero exit code錯(cuò)誤解決辦法,最好的解決辦法可以通過(guò)“Pycharm”左下角的“Terminal”,在pycharm內(nèi)使用pip安裝,以安裝“requests”為例,需要的朋友可以參考下
    2023-01-01
  • GitHub?AI編程工具copilot在Pycharm的應(yīng)用

    GitHub?AI編程工具copilot在Pycharm的應(yīng)用

    最近聽(tīng)說(shuō)github出了一種最新的插件叫做copilot,這篇文章主要給大家介紹了關(guān)于GitHub?AI編程工具copilot在Pycharm的應(yīng)用,目前感覺(jué)確實(shí)不錯(cuò),建議大家也去使用,需要的朋友可以參考下
    2022-04-04

最新評(píng)論