Python中執行緒的建立方法:派生Thread子類
阿新 • • 發佈:2019-02-13
在看這個之前,我應該假設你對類已經很熟悉了。
什麼是超類,子類?怎麼派生子類?子類的繼承,子類對於超類方法的新增或是過載。這些如果很熟悉,就能看懂了,如果不是很熟悉,你可以去看看《Python學習手冊》,它的第六部分關於類介紹的很仔細,閱讀即可。
那麼接下來就來講這種建立執行緒的方式——派生Thread子類,並建立子類的例項
#-*- coding: UTF-8 -*-
import threading
import time
def loop(num):
print('the start time is %s'%time.ctime())
time.sleep(num)
print('the end time is %s' %time.ctime())
class Mythread(threading.Thread):
def __init__(self,func,args,name):
threading.Thread.__init__(self)
self.func=func
self.args=args
self.name=name
def run(self):
#這裡是將threading.Thread中的run方法進行了過載
self.func(self.args)
def main() :
t=Mythread(loop,4,loop.__name__)
f=Mythread(loop,5,loop.__name__)
t.start()
#解釋:這裡的start可以說是呼叫run的方法
f.start()
t.join()
f.join()
if __name__=='__main__':
main()
接下來用假如一點東西來驗證我上面的兩個解釋
接下來我們來驗證(start)方法是呼叫run方法這一說法
我們假設threading.Thread中的start方法的定義方式為
def start (self):
self.run()
我們會在接下來的程式碼中將start方法進行擴充套件
```
#-*- coding: UTF-8 -*-
import threading
import time
def loop(num):
print('the start time is %s'%time.ctime())
time.sleep(num)
print('the end time is %s'%time.ctime())
class Mythread(threading.Thread):
def __init__(self,func,args,name):
threading.Thread.__init__(self)
self.func=func
self.args=args
self.name=name
def run(self):
#這裡是將threading.Thread中的run方法進行了過載
self.func(self.args)
def printff(self):
print(self.args)
def start(self):
#為了更好的理解,你可以先將**threading.Thread.start(self)**這一句刪除進行測試
threading.Thread.start(self)
self.printff()
def main():
t=Mythread(loop,4,loop.__name__)
f=Mythread(loop,5,loop.__name__)
t.start()
#解釋:這裡的start可以說是呼叫run的方法
f.start()
t.join()
f.join()
if __name__=='__main__':
main()
你可以將以上兩段程式碼複製貼上到你的IDLE中,看看執行效果,我相信你會恍然大悟的