Day19-總結(jié)

import threading
from time import sleep
from datetime import datetime

# 1.主線程和子線程
'''
默認情況下,進程有一個線程纵柿,這個線程叫主線程蜈抓。(主線程是系統(tǒng)自動創(chuàng)建的)
默認程序所有的代碼是在主線程下執(zhí)行的
程序員通過代碼創(chuàng)建的線程都叫子線程资昧。
'''
# 2.創(chuàng)建子線程
'''
python內(nèi)置的threading模塊中提供了和線程操作相關(guān)的類和方法
threading模塊中有個Thread類撤缴,這個或者這個的子類的對象就是線程對象
需要子線程的時候就創(chuàng)建Thread類的對象
'''


def download(name):
    print('%s: 開始下載:%s' % (datetime.now(), name))
    print(threading.current_thread())
    sleep(5)
    print('%s: 下載完成:%s' % (datetime.now(), name))


if __name__ == '__main__':
    # download('龍貓')
    # 1.創(chuàng)建線程對象
    '''
    1)語法
    Thread(target=函數(shù)虎眨, args=實參列表)
    2)說明
    target - 必須要賦一個函數(shù)凄敢,這個函數(shù)會在子線程中調(diào)用
    args - 賦一個元組扑庞,元組中的元素就是調(diào)用target函數(shù)的時候需要傳的參數(shù)
    '''
    # 1.創(chuàng)建兩個子線程對象
    t1 = threading.Thread(target=download, args=('龍貓',))
    t2 = threading.Thread(target=download, args=('你的名字',))
    # 2.讓子線程開始執(zhí)行
    '''
    線程對象.start() - 在子線程中去調(diào)用target對應(yīng)函數(shù)栅隐,并將args中的值作為實參
    '''
    t1.start()
    t2.start()

    # 3.程序的結(jié)束(進程的結(jié)束)
    '''
    一個進程的結(jié)束佣赖,看是否這個進程中的每個線程都結(jié)束。
    線程結(jié)束:任務(wù)執(zhí)行完成萎胰,遇到exit()函數(shù)榔组,發(fā)生異常
    程序出現(xiàn)異常只會影響當前出現(xiàn)異常的線程检痰,其他線程正常運行
    exit()只結(jié)束當前的線程
    '''

1.通過創(chuàng)建Thread類的子類對象來創(chuàng)建子線程

1)聲明一個類繼承Thread

class DownloadThread(threading.Thread):
    def __init__(self, name):
            super().__init__()
            self.name = name
    # 2)實現(xiàn)run方法椎椰,這個方法中代碼就是會在子線程中執(zhí)行的代碼

    def run(self):
        print('%s - 開始下載:%s ' % (datetime.now(), self.name))
        sleep(4)
        # print(threading.current_thread())
        print('%s - 下載完成:%s' % (datetime.now(), self.name))


if __name__ == '__main__':
    # 3)創(chuàng)建子類的線程對象
    t1 = DownloadThread('龍貓',)
    # 4)通過start去執(zhí)行子線程中的任務(wù)
    t1.start()
import threading
import datetime
import time
import random


class Download(threading.Thread):
    def __init__(self, name):
        super().__init__()
        self.name = name

    def run(self):
        print('%s - 開始下載%s' % (datetime.datetime.now(), self.name))
        t = random.randint(2, 6)
        time.sleep(t)
        print('%s - %s下載完成' % (datetime.datetime.now(), self.name))


if __name__ == '__main__':
    t1 = Download('龍貓')
    t2 = Download('你的名字')
    t3 = Download('女教師')
    t1.start()
    t2.start()
    # 1.join的用法
    '''
    線程對象.join()
    其他的代碼
    其他代碼會等到指定的線程對象結(jié)束后才會執(zhí)行
    '''
    t1.join()
    t2.join()
    t3.start()
    print('下載完成')
import threading
import time

# 1.怎么加鎖
'''
1)保證一個數(shù)據(jù)對應(yīng)一把鎖:創(chuàng)建鎖對象
2)使用數(shù)據(jù)前加鎖:鎖對象.acquire()
3)數(shù)據(jù)使用完成后釋放鎖
'''


account = 1000
# 1.創(chuàng)建鎖對象
lock = threading.Lock()


def save_money(num):
    # 2.加鎖
    lock.acquire()
    print('開始存錢')
    global account
    balance = account
    time.sleep(4)
    account = balance + num
    # 3.釋放鎖
    lock.release()
    print('存完后余額:%d' % account)


def draw_money(num):
    lock.acquire()
    print('開始取錢')
    global account
    balance = account
    if balance < num:
        print('余額不足...')
        return
    time.sleep(4)
    account = balance - num
    lock.release()
    print('取完后余額:%d' % account)


t1 = threading.Thread(target=save_money, args=(1000,))
t2 = threading.Thread(target=draw_money, args=(500,))

t1.start()
t2.start()
import threading
import time


class Account:
    def __init__(self, name, id_card, tel, balance):
        self.balance = balance
        self.name = name
        self.id_card = id_card
        self.card_number = '2221'
        self.tel = tel
        self.lock = threading.Lock()

    def save_money(self, num):
        # lock.acquire()
        print('開始存錢')
        self.lock.acquire()
        balance = self.balance
        time.sleep(4)
        self.balance = balance + num
        # 3.釋放鎖
        # lock.release()
        print('存完后余額:%d' % self.balance)
        self.lock.release()

    def draw_money(self, num):
        # lock.acquire()
        print('開始取錢')
        self.lock.acquire()
        balance = self.balance
        if balance < num:
            print('余額不足')
        time.sleep(4)
        self.balance = balance - num
        # 3.釋放鎖
        # lock.release()
        print('取完后余額:%d' % self.balance)
        self.lock.release()


account = Account('zzq', '231', '213', 100)
account2 = ('21e', '421', '213', 100)
t1 = threading.Thread(target=account.save_money, args=(100,))
t2 = threading.Thread(target=account.draw_money, args=(50,))

t1.start()
t2.start()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末桥帆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機谴餐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門侈咕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事张吉≌崞椋” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缤骨。 經(jīng)常有香客問我蜂绎,道長劳殖,這世上最難降的妖魔是什么爹脾? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任蟹地,我火速辦了婚禮,結(jié)果婚禮上纫雁,老公的妹妹穿的比我還像新娘曲管。我一直安慰自己,他們只是感情好场斑,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布吴菠。 她就那樣靜靜地躺著,像睡著了一般铐姚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天筛璧,我揣著相機與錄音,去河邊找鬼。 笑死恳不,一個胖子當著我的面吹牛规求,可吹牛的內(nèi)容都是我干的沮尿。 我是一名探鬼主播畜疾,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼揍拆!你這毒婦竟也來了播揪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎舶吗,沒想到半個月后征冷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡誓琼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年检激,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腹侣。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡叔收,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出傲隶,到底是詐尸還是另有隱情饺律,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布跺株,位于F島的核電站复濒,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乒省。R本人自食惡果不足惜巧颈,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望袖扛。 院中可真熱鬧砸泛,春花似錦、人聲如沸蛆封。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娶吞。三九已至垒迂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妒蛇,已是汗流浹背机断。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绣夺,地道東北人吏奸。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像陶耍,于是被迫代替她去往敵國和親奋蔚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

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