前言
冬天到了,小伙伴們最喜歡和好朋友一起吃火鍋了,那么這種多個人同時吃火鍋的場景如何用python實現呢?
執行函數
1.先寫一個執行函數,用來實現做某件事情,不同的人吃火鍋用一個參數people代替。
# coding=utf-8
import threading
import time
def 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-8
import threading
import time
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)
start和run區別
1.start()方法 開始線程活動。
對每一個線程對象來說它只能被調用一次,它安排對象在一個另外的單獨線程中調用run()方法(而非當前所處線程)。
當該方法在同一個線程對象中被調用超過一次時,會引入RuntimeError(運行時錯誤)。
2.run()方法 代表了線程活動的方法。
你可以在子類中重寫此方法。標准run()方法調用了傳遞給對象的構造函數的可調對象作為目標參數,如果有這樣的參數的話,順序和關鍵字參數分別從args和kargs取得
參考代碼
# coding=utf-8
import threading
import time
def 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-1
Wed Jan 17 16:33:44 2018 吃火鍋的小伙伴-羊肉:xiaoming
開始線程: Thread-2
Wed Jan 17 16:33:44 2018 吃火鍋的小伙伴-羊肉:xiaowang
退出主線程
Wed Jan 17 16:33:45 2018 吃火鍋的小伙伴-魚丸:xiaomingWed Jan 17 16:33:45 2018 吃火鍋的小伙伴-魚丸:xiaowang
qq交流群:226296743qq交流群:226296743
結束線程: Thread-1結束線程: Thread-2
備注:這里運行結果會有個問題,主線程已經退出了,子線程Thread-1和Thread-2還在跑。這就是后面需要講的守護線程了。。。
python自動化交流 QQ群:779429633