1. 程式人生 > >PYTHON多線程

PYTHON多線程

art join() targe end 時間 import for range 多線程

  在單線程的情況下,程序是逐條指令順序執行的。同一時間只做一個任務,完成了一個任務再進行下一個任務。比如有5個人吃飯,單線程一次只允許一個人吃,一個人吃完了另一個人才能接著吃,假如每個人吃飯都需要1分鐘,5個人就需要5分鐘。多線程的情況下,程序就會同時進行多個任務,雖然在同一時刻也只能執行某個任務的一條指令,但是由於CPU運行非常快。可以在極短的時間內切換到另一個任務。從宏觀效果來看,CPU是多個任務同時執行的。也拿剛才的吃飯做比喻,多線程就相當於5個人同時吃飯,5個人吃完花費的時間和一個人相同,也是1分鐘。效率的提高是不言而喻的。下面我們用程序來實現一下,首先是單線程。

import time
def

begin(n):
print("第%s個人開始吃飯"%(n+1))
time.sleep(1)
print("第%s個人吃完飯了" %(n+1))
begin_time = time.time()#開始吃飯時間
for count in range(5):
begin(count)
print("5個人吃飯花費的總時間為",time.time()-begin_time)#統計吃飯用時

運行結果如下:

第1個人開始吃飯

第1個人吃完飯了

第2個人開始吃飯

第2個人吃完飯了

第3個人開始吃飯

第3個人吃完飯了

第4個人開始吃飯

第4個人吃完飯了

第5個人開始吃飯

第5個人吃完飯了

5個人吃飯花費的總時間為 5.002005100250244

從運行結果可以清晰看出,總共用了5秒時間。

下面我們再試試多線程:

import threading
import time
def begin(n):
print("第%s個人開始吃飯"%n)
time.sleep(1)
print("第%s個人吃完飯了" %n)
begin_time = time.time()
t_result = []
for count in range(5):
t = threading.Thread(target=begin, args=("%s"%(count+1),))
t.start()
t_result.append(t)
for

t in t_result:
t.join()
print("5個人吃飯花費的總時間為",time.time()-begin_time)

程序運行結果如下:

第1個人開始吃飯

第2個人開始吃飯

第3個人開始吃飯

第4個人開始吃飯

第5個人開始吃飯

第2個人吃完飯了

第1個人吃完飯了

第5個人吃完飯了

第4個人吃完飯了

第3個人吃完飯了

5個人吃飯花費的總時間為 1.0021629333496094

從運行結果可以清晰看出,總共用了1秒時間。

PYTHON多線程