1. 程式人生 > >多執行緒與多程序比較

多執行緒與多程序比較

在學習到作業系統時充滿了迷惑,參考別的文章,在此對執行緒及程序的效率比較,以加深理解。

  1. 執行緒及程序含義。對作業系統來說,一個任務就是一個程序,如:開啟Chrome,就啟動了Chrome程序。而開啟瀏覽器後的搜尋,收藏,設定等子任務,稱為執行緒。程序是由若干個執行緒組成,一個程序至少有一個執行緒。多工可以有多個程序完成,也可以有一個程序內的多個執行緒完成,當然也可以多程序,多執行緒。
  2. 單程序,多執行緒,多程序比較。同時訪問一百次CSDN主頁,分別程序操作獲取所需時間。
  3. 程式碼如下
    3.1 單程序
import requests,time
#獲取當前的開始時間
start_time = time
.time() #訪問一百次主頁 [requests.get('http://www.csdn.net/?ref=toolbar') for x in range(100)] print("用時:%s" %(time.time()-start_time))

輸出結果為:

用時:13.618778944015503
 3.2 多執行緒
import threadpool,requests,time
start_time = time.time()
def run(url):
    r=requests.get(url=url)
pool = threadpool.ThreadPool(10)
reqs = threadpool.makeRequests(run,['http://www.csdn.net/?ref=toolbar'
for x in range(100)]) [pool.putRequest(x) for x in reqs] pool.wait() print("用時:%s" %(time.time()-start_time))

輸出結果

用時:2.3481340408325195
3.3 多程序
import multiprocessing,time,requests
start_time = time.time()
def run(url):
    r = requests.get(url=url)

if __name__=="__main__":
    pool = multiprocessing.Pool(10
) [pool.apply_async(run,args=("http://www.csdn.net/?ref=toolbar",))for i in range(100)] pool.close() pool.join() print("用時:%s" %(time.time()-start_time))

輸出結果

用時:4.41025185585022

不知道對不對,求指正。