python3 計算密集型和IO密集型進程和線程的區別


# -*- coding: utf-8 -*- import time from multiprocessing import Process from threading import Thread def func(): ret = 0 for i in range(10000000): ret += i if __name__ == '__main__': '''計算密集型''' start_time = time.time() p_lst = [] for i in range(10): # p = Process(target=func) p = Thread(target=func) p_lst.append(p) p.start() [pp.join() for pp in p_lst] end_time = time.time() print("run time is :%s" % (end_time-start_time)) # run time is :3.555203437805176 # 多進程的運行時間,4個cpu同時處理 # run time is :9.960569858551025 # 多線程的運行時間,一個cpu去處理 # 多核計算密集型的,選擇多進程,可以充分利用cpu

 

# -*- coding: utf-8 -*- import time from multiprocessing import Process from threading import Thread def func(): time.sleep(1) if __name__ == '__main__': '''IO密集型''' start_time = time.time() p_lst = [] for i in range(10): # p = Process(target=func) p = Thread(target=func) p_lst.append(p) p.start() [pp.join() for pp in p_lst] end_time = time.time() print("run time is :%s" % (end_time-start_time)) # run time is :1.660094976425171 # 多進程的運行時間,4個cpu同時處理,因為進程比線程的開銷大 # run time is :1.0020575523376465 # 多線程的運行時間,一個cpu去處理 # 多核IO密集型的,選擇多線程,線程開銷小

 

守護線程和守護進程的區別

  守護進程:隨着主進程的代碼執行結束,而結束
  守護線程:隨着所有非守護線程的執行結束而結束



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM