python筆記8-多線程threading之封裝式

來源:互聯網
上載者:User

標籤:stc   class   log   min   實現   繼承   9.png   父類   lock   

前言

冬天到了,小夥伴們最喜歡和好朋友一起吃火鍋了,那麼這種多個人同時吃火鍋的情境如何用python實現呢?

執行函數

1.先寫一個執行函數,用來實現做某件事情,不同的人吃火鍋用一個參數people代替。

# coding=utf-8import threadingimport timedef chiHuoGuo(people):    print("%s 吃火鍋的小夥伴-羊肉:%s" % (time.ctime(),people))    time.sleep(1)    print("%s 吃火鍋的小夥伴-魚丸:%s" % (time.ctime(),people))

 

重寫threading.Thread

1.使用Threading模組建立線程,直接從threading.Thread繼承,然後重寫__init__方法和run方法

# coding=utf-8import threadingimport timeclass myThread (threading.Thread):   # 繼承父類threading.Thread    def __init__(self, people, name):        ‘‘‘重寫threading.Thread初始化內容‘‘‘        threading.Thread.__init__(self)        self.threadName = name        self.people = people    def run(self):   # 把要執行的代碼寫到run函數裡面 線程在建立後會直接運行run函數        ‘‘‘重寫run方法‘‘‘        print("開始線程: " + self.threadName)        chiHuoGuo(self.people)     # 執行任務        print("qq交流群:226296743")        print("結束線程: " + self.name)

 

start和run區別

1.start()方法 開始線程活動。

對每一個線程對象來說它只能被調用一次,它安排對象在一個另外的單獨線程中調用run()方法(而非當前所處線程)。

當該方法在同一個線程對象中被調用超過一次時,會引入RuntimeError(執行階段錯誤)。

2.run()方法 代表了線程活動的方法。

你可以在子類中重寫此方法。標準run()方法調用了傳遞給對象的建構函式的可調對象作為目標參數,如果有這樣的參數的話,順序和關鍵字參數分別從args和kargs取得

參考代碼
# coding=utf-8import threadingimport timedef chiHuoGuo(people):    print("%s 吃火鍋的小夥伴-羊肉:%s" % (time.ctime(),people))    time.sleep(1)    print("%s 吃火鍋的小夥伴-魚丸:%s" % (time.ctime(),people))class myThread (threading.Thread):   # 繼承父類threading.Thread    def __init__(self, people, name):        ‘‘‘重寫threading.Thread初始化內容‘‘‘        threading.Thread.__init__(self)        self.threadName = name        self.people = people    def run(self):   # 把要執行的代碼寫到run函數裡面 線程在建立後會直接運行run函數        ‘‘‘重寫run方法‘‘‘        print("開始線程: " + self.threadName)        chiHuoGuo(self.people)     # 執行任務        print("qq交流群:226296743")        print("結束線程: " + self.name)# 建立新線程thread1 = myThread("xiaoming", "Thread-1")thread2 = myThread("xiaowang", "Thread-2")# 開啟線程thread1.start()thread2.start()time.sleep(0.5)print("退出主線程")

 

運行結果:

開始線程: Thread-1Wed Jan 17 16:33:44 2018 吃火鍋的小夥伴-羊肉:xiaoming開始線程: Thread-2Wed Jan 17 16:33:44 2018 吃火鍋的小夥伴-羊肉:xiaowang退出主線程Wed Jan 17 16:33:45 2018 吃火鍋的小夥伴-魚丸:xiaomingWed Jan 17 16:33:45 2018 吃火鍋的小夥伴-魚丸:xiaowang結束線程: Thread-1結束線程: Thread-2

備忘:這裡運行結果會有個問題,主線程已經退出了,子線程Thread-1和Thread-2還在跑。這就是後面需要講的守護線程了。。。

  

python筆記8-多線程threading之封裝式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.