Day10 多線程理論 開啟線程
阿新 • • 發佈:2017-09-04
__name__ running thread 定義類 star 繼承 同時 nbsp 自己
多線程:
多線程和多進程的不同是他們占用的資源不一樣,
一個進程裏邊可以包含一個或多個進程,
進程的開銷大,線程的開銷小。
打個比方來說:創建一個進程,就是創建一個車間。創建一個線程,就是在一個車間創建一個流水線。
怎麽去開啟一個線程:
方法一(直接用默認的類):
1 開啟線程的方式一:使用替換threading模塊提供的Thread 2 from threading import Thread 3 from multiprocessing import Process 4 5 def task(): 6 print(‘is running‘) 7 8 if__name__ == ‘__main__‘: 9 t=Thread(target=task,) 10 # t=Process(target=task,) 11 t.start() 12 print(‘主‘)
方法二(自己定義一個類,繼承系統的類):
1 #開啟線程的方式二:自定義類,繼承Thread 2 from threading import Thread 3 from multiprocessing import Process 4 class MyThread(Thread): 5 def __init__(self,name):6 super().__init__() #不破壞原有的類 7 self.name=name 8 def run(self): 9 print(‘%s is running‘ %self.name) 10 11 if __name__ == ‘__main__‘: 12 t=MyThread(‘egon‘) 13 # t=Process(target=task,) 14 t.start() 15 print(‘主‘)
在同時開始多個線程和多個進程的時候,多個線程的pid是不一樣的,多個線程的pid是一樣的。
可以利用這段代碼測試下:
from threading import Thread from multiprocessing import Process import os def task(): print(‘%s is running‘ %os.getpid()) if __name__ == ‘__main__‘: # t1=Thread(target=task,) # t2=Thread(target=task,) t1=Process(target=task,) t2=Process(target=task,) t1.start() t2.start() print(‘主‘,os.getpid())
多個線程是共享同一個進程內的資源的。
Day10 多線程理論 開啟線程