多執行緒與多程序比較
阿新 • • 發佈:2019-02-08
在學習到作業系統時充滿了迷惑,參考別的文章,在此對執行緒及程序的效率比較,以加深理解。
- 執行緒及程序含義。對作業系統來說,一個任務就是一個程序,如:開啟Chrome,就啟動了Chrome程序。而開啟瀏覽器後的搜尋,收藏,設定等子任務,稱為執行緒。程序是由若干個執行緒組成,一個程序至少有一個執行緒。多工可以有多個程序完成,也可以有一個程序內的多個執行緒完成,當然也可以多程序,多執行緒。
- 單程序,多執行緒,多程序比較。同時訪問一百次CSDN主頁,分別程序操作獲取所需時間。
- 程式碼如下
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
不知道對不對,求指正。