進程線程其實都是虛擬單位,都是用來幫助咱們形象的描述某種事物python
進程:資源單位
線程:執行單位
將內存好比成工廠
那麼進程就至關因而工廠裏面的車間
而你的線程就至關因而車間裏面的流水線
ps:每一個進程都自帶一個線程,線程纔是真正的執行單位,進程只是在線程運行過程當中
進程提供代碼運行所須要的資源操作系統
爲何要有線程
開進程
1.申請內存空間 耗資源
2."拷貝代碼" 耗資源線程
開線程
一個進程內能夠起多個線程,而且線程與線程之間數據是共享的
ps:開啓線程的開銷要遠遠小於開啓進程的開銷code
開線程不須要在__main__代碼塊內 可是習慣性的仍是寫在__main__代碼塊內繼承
from threading import Thread import time def task(name): print('%s is running'%name) time.sleep(3) print('%s is over'%name) # 開線程不須要在__main__代碼塊內 可是習慣性的仍是寫在__main__代碼塊內 t = Thread(target=task,args=('egon',)) t.start() # 告訴操做系統開闢一個線程 線程的開銷遠遠小於進程 # 小的代碼執行完 線程就已經開啓了 print('主')
from threading import Thread import time class MyThread(Thread): def __init__(self,name): super().__init__() self.name = name def run(self): print('%s is running'%self.name) time.sleep(3) print('%s is over'%self.name) t = MyThread('egon') t.start() print('主')