day20線程數(shù)據(jù)安全

線程數(shù)據(jù)安全

from time import sleep
from threading import Thread, Lock

獲取鎖對(duì)象
獲取數(shù)據(jù)
數(shù)操作完成后
釋放鎖對(duì)象

注意: 使用鎖的時(shí)候保證一個(gè)數(shù)據(jù)對(duì)應(yīng)一把鎖

class Account:
    """銀行賬號(hào)類"""
    def __init__(self, name, tel, balance, bank='招商銀行'):
        self.bank = bank
        self.card_number = '6233392838382383'
        self.name = name
        self.tel = tel
        self.balance = balance
        self.lock = Lock()    # 1.創(chuàng)建鎖(保證一個(gè)數(shù)據(jù)一把鎖)

    def save_money(self, amount):
        print('=====開(kāi)始存錢递沪!======')
        # 2.使用鎖
        self.lock.acquire()
        # 獲取余額
        bl = self.balance
        # print('存錢余額1:',bl)
        sleep(2)
        self.balance = bl + amount
        # 3.釋放鎖
        self.lock.release()
        # print('存錢余額2:', self.balance)
        print('=====存錢結(jié)束!======')


    def draw_money(self, amount):
        print('=====開(kāi)始取錢僚焦!======')
        self.lock.acquire()
        bl = self.balance
        # print('取錢余額1:', bl)
        if bl < amount:
            print('余額不足!')
            print('=====取錢結(jié)束======')
            return
        sleep(3)
        self.balance = bl - amount
        self.lock.release()
        # print('取錢余額2:', self.balance)
        print('=====取錢結(jié)束======')


account = Account('余婷', '153000782', 10000)

t1 = Thread(target=account.save_money, args=(20000,))
t2 = Thread(target=account.draw_money, args=(5000,))
t1.start()
t2.start()
t1.join()
t2.join()
print(account.balance)


account2 = Account('小明', '23782738738', 1000)

鎖的使用

from threading import *
from time import sleep

list1 = [1, 2, 3]
lock = Lock()

def func1():
lock.acquire()
global list1
list2 = list1[:]
sleep(3)
list2.append(100)
list1 = list2[:]
lock.release()

def func2():
lock.acquire()
global list1
list2 = list1[:]
sleep(3)
list2.remove(2)
list1 = list2[:]
lock.release()

t1 = Thread(target=func1)
t2 = Thread(target=func2)
t1.start()
t2.start()
t1.join()
t2.join()
print(list1)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末檐春,一起剝皮案震驚了整個(gè)濱河市砌函,隨后出現(xiàn)的幾起案子冀墨,更是在濱河造成了極大的恐慌第焰,老刑警劉巖峻堰,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異丸卷,居然都是意外死亡枕稀,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門谜嫉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)萎坷,“玉大人,你說(shuō)我怎么就攤上這事沐兰《叩担” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵住闯,是天一觀的道長(zhǎng)瓜浸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)比原,這世上最難降的妖魔是什么插佛? 我笑而不...
    開(kāi)封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮量窘,結(jié)果婚禮上雇寇,老公的妹妹穿的比我還像新娘。我一直安慰自己蚌铜,他們只是感情好锨侯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著冬殃,像睡著了一般囚痴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上审葬,一...
    開(kāi)封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天渡讼,我揣著相機(jī)與錄音骂束,去河邊找鬼。 笑死成箫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旨枯。 我是一名探鬼主播蹬昌,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼攀隔!你這毒婦竟也來(lái)了皂贩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤昆汹,失蹤者是張志新(化名)和其女友劉穎明刷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體满粗,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辈末,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了映皆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挤聘。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捅彻,靈堂內(nèi)的尸體忽然破棺而出组去,到底是詐尸還是另有隱情,我是刑警寧澤步淹,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布从隆,位于F島的核電站,受9級(jí)特大地震影響缭裆,放射性物質(zhì)發(fā)生泄漏键闺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一幼驶、第九天 我趴在偏房一處隱蔽的房頂上張望艾杏。 院中可真熱鬧,春花似錦盅藻、人聲如沸购桑。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)勃蜘。三九已至,卻和暖如春假残,著一層夾襖步出監(jiān)牢的瞬間缭贡,已是汗流浹背炉擅。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阳惹,地道東北人谍失。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像莹汤,于是被迫代替她去往敵國(guó)和親快鱼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 寫在前面的話 代碼中的# > 表示的是輸出結(jié)果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 2,743評(píng)論 0 8
  • 線程 操作系統(tǒng)線程理論 線程概念的引入背景 進(jìn)程 之前我們已經(jīng)了解了操作系統(tǒng)中進(jìn)程的概念,程序并不能單獨(dú)運(yùn)行止潮,只有...
    go以恒閱讀 1,635評(píng)論 0 6
  • 線程狀態(tài)新建窃判,就緒,運(yùn)行喇闸,阻塞袄琳,死亡。 線程同步多線程可以同時(shí)運(yùn)行多個(gè)任務(wù)仅偎,線程需要共享數(shù)據(jù)的時(shí)候跨蟹,可能出現(xiàn)數(shù)據(jù)不...
    KevinCool閱讀 795評(píng)論 0 0
  • 多線程模塊 threading 創(chuàng)建多線程的兩種方式:import threadingimport time 創(chuàng)建...
    錢塘閱讀 385評(píng)論 0 3
  • 環(huán)境 xubuntu anaconda pycharm python https://www.cnblogs.co...
    Ericoool閱讀 1,893評(píng)論 0 0