1. 程式人生 > >python--多線程多進程

python--多線程多進程

microsoft 就是 循環 star The 單元 等待 threads 否則

一、進程
  對於操作系統來說,一個任務就是一個進程(Process),比如打開一個瀏覽器就是啟動一個瀏覽器進程,打開一個記事本就啟動了一個記事本進程,打開兩個記事本就啟動了
兩個記事本進程。進程是很多資源的集合。一個進程可以有多個線程,線程是包含在一個進程裏面的,一個進程裏面默認有一個線程

二、線程(Thread)
  線程就是程序裏面最小的執行單元,在一個進程內部,要同時幹多件事,就需要同時運行多個“子任務”,我們把進程內的這些“子任務”稱為線程(Thread)。有些進程還不
止同時幹一件事,比如Word,它可以同時進行打字、拼寫檢查、打印等事情。

三、多線程
  多線程就是N個線程一起幹活,並發,python中的多線程使用theading模塊


下面是一個簡單多線程

1 import threading,time
2 def run():
3     time.sleep(3)#幹活需要3秒
4     print(哈哈哈)
5 for i in range(5):
6     t = threading.Thread(target=run)#實例化了一個進程
7                         #運行線程,括號裏面的就是要做的事
8     t.start()

四、多線程等待
以下用一個簡單的例子來說明

 1 import threading,time
 2 def run():#主線程
 3     time.sleep(3)
4 print(哈哈) 5 6 start_time=time.time() 7 threads=[]#存放啟動的5個線程 8 for i in range(5): 9 t = threading.Thread(target=run)#第一個線程 10 t.start() 11 threads.append(t) 12 print(threads:,threads) 13 14 for t in threads:#主線程循環等待所有子線程執行結束 15 t.join()#主線程等待子線程執行結束 16 end_time=time.time()
17 print(run_time..,end_time-start_time)

五、守護線程
  守護線程,就是只要主線程結束,那麽子線程立即結束

 1 import threading,time
 2 def run():#主線程
 3     time.sleep(3)
 4     print(哈哈)
 5 
 6 for i in range(5):
 7     t = threading.Thread(target=run)
 8     t.setDaemon(True)#把子線程設置成為守護線程
 9     t.start()
10 print(運行完成)

六、多進程
多進程多用於處理CPU密集型任務

 1 import multiprocessing,threading
 2 def my():
 3     print(哈哈)
 4 
 5 #進程5個
 6   #每個進程下6個線程
 7 def run(num):
 8     for i in range(5):
 9         t = threading.Thread(target=my)
10         t.start()
11 
12 if __name__ ==__main__:#多進程必須要加上__name__,否則會報錯
13     for i in range(5):
14         p = multiprocessing.Process(target=run,args=(6,))#啟動一個進程
15         p.start()
16         p.join()

python--多線程多進程