日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python 多進程、多線程效率對比

瀏覽:12日期:2022-07-04 18:58:42

Python 界有條不成文的準則: 計算密集型任務適合多進程,IO 密集型任務適合多線程。本篇來作個比較。

通常來說多線程相對于多進程有優勢,因為創建一個進程開銷比較大,然而因為在 python 中有 GIL 這把大鎖的存在,導致執行計算密集型任務時多線程實際只能是單線程。而且由于線程之間切換的開銷導致多線程往往比實際的單線程還要慢,所以在 python 中計算密集型任務通常使用多進程,因為各個進程有各自獨立的 GIL,互不干擾。

而在 IO 密集型任務中,CPU 時常處于等待狀態,操作系統需要頻繁與外界環境進行交互,如讀寫文件,在網絡間通信等。在這期間 GIL 會被釋放,因而就可以使用真正的多線程。

以上是理論,下面做一個簡單的模擬測試: 大量計算用 math.sin() + math.cos() 來代替,IO 密集型用 time.sleep() 來模擬。 在 Python 中有多種方式可以實現多進程和多線程,這里一并納入看看是否有效率差異:

多進程: joblib.multiprocessing, multiprocessing.Pool, multiprocessing.apply_async, concurrent.futures.ProcessPoolExecutor 多線程: joblib.threading, threading.Thread, concurrent.futures.ThreadPoolExecutor

from multiprocessing import Poolfrom threading import Threadfrom concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutorimport time, os, mathfrom joblib import Parallel, delayed, parallel_backenddef f_IO(a): # IO 密集型 time.sleep(5)def f_compute(a): # 計算密集型 for _ in range(int(1e7)): math.sin(40) + math.cos(40) returndef normal(sub_f): for i in range(6): sub_f(i) returndef joblib_process(sub_f): with parallel_backend('multiprocessing', n_jobs=6): res = Parallel()(delayed(sub_f)(j) for j in range(6)) returndef joblib_thread(sub_f): with parallel_backend(’threading’, n_jobs=6): res = Parallel()(delayed(sub_f)(j) for j in range(6)) returndef mp(sub_f): with Pool(processes=6) as p: res = p.map(sub_f, list(range(6))) returndef asy(sub_f): with Pool(processes=6) as p: result = [] for j in range(6): a = p.apply_async(sub_f, args=(j,)) result.append(a) res = [j.get() for j in result]def thread(sub_f): threads = [] for j in range(6): t = Thread(target=sub_f, args=(j,)) threads.append(t) t.start() for t in threads: t.join()def thread_pool(sub_f): with ThreadPoolExecutor(max_workers=6) as executor: res = [executor.submit(sub_f, j) for j in range(6)]def process_pool(sub_f): with ProcessPoolExecutor(max_workers=6) as executor: res = executor.map(sub_f, list(range(6)))def showtime(f, sub_f, name): start_time = time.time() f(sub_f) print('{} time: {:.4f}s'.format(name, time.time() - start_time))def main(sub_f): showtime(normal, sub_f, 'normal') print() print('------ 多進程 ------') showtime(joblib_process, sub_f, 'joblib multiprocess') showtime(mp, sub_f, 'pool') showtime(asy, sub_f, 'async') showtime(process_pool, sub_f, 'process_pool') print() print('----- 多線程 -----') showtime(joblib_thread, sub_f, 'joblib thread') showtime(thread, sub_f, 'thread') showtime(thread_pool, sub_f, 'thread_pool')if __name__ == '__main__': print('----- 計算密集型 -----') sub_f = f_compute main(sub_f) print() print('----- IO 密集型 -----') sub_f = f_IO main(sub_f)

結果:

----- 計算密集型 -----normal time: 15.1212s------ 多進程 ------joblib multiprocess time: 8.2421spool time: 8.5439sasync time: 8.3229sprocess_pool time: 8.1722s----- 多線程 -----joblib thread time: 21.5191sthread time: 21.3865sthread_pool time: 22.5104s----- IO 密集型 -----normal time: 30.0305s------ 多進程 ------joblib multiprocess time: 5.0345spool time: 5.0188sasync time: 5.0256sprocess_pool time: 5.0263s----- 多線程 -----joblib thread time: 5.0142sthread time: 5.0055sthread_pool time: 5.0064s

上面每一方法都統一創建6個進程/線程,結果是計算密集型任務中速度:多進程 > 單進程/線程 > 多線程, IO 密集型任務速度: 多線程 > 多進程 > 單進程/線程。

以上就是Python 多進程、多線程效率比較的詳細內容,更多關于Python 多進程、多線程的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国内一区二区三区| av免费不卡国产观看| 久久天堂av| 亚洲最新无码中文字幕久久| 国产一区二区亚洲| 成人黄色av| 日韩欧美在线中字| 日本久久成人网| 美女网站一区| 亚洲精品小说| 亚洲欧美日韩国产| 中文字幕一区二区三区日韩精品 | 日本不卡高清| 日本成人在线网站| 国产精品资源| 成人在线超碰| 久久久五月天| 黄色成人在线网址| 一级成人国产| 国产欧美一区二区三区米奇| 久久精品国产久精国产爱| 精品黄色一级片| 韩国久久久久久| 91成人网在线观看| 亚洲婷婷丁香| 国产精品白丝久久av网站| 国产一区二区三区亚洲| 亚洲午夜天堂| 久久国产精品久久久久久电车| 免费在线观看日韩欧美| 热久久久久久| 精品国产午夜肉伦伦影院| 亚洲伦乱视频| 巨乳诱惑日韩免费av| 日本午夜精品久久久久| 国产在线一区不卡| 激情亚洲影院在线观看| 夜久久久久久| 国产欧美日韩精品一区二区三区| 国产精品麻豆久久| 先锋影音久久久| 国产乱论精品| 日韩国产一区二区三区| 噜噜噜久久亚洲精品国产品小说| 欧美亚洲一级| 国产伦久视频在线观看| 亚洲一区欧美激情| 欧美激情福利| 午夜av一区| 国产欧美日韩精品一区二区免费| 日韩在线视频精品| 首页亚洲欧美制服丝腿| 欧美激情五月| 视频一区免费在线观看| 国产成人调教视频在线观看| 亚洲欧美日韩国产一区二区| 精品日韩在线| 亚洲深夜福利在线观看| 波多视频一区| 青青国产精品| 亚州av乱码久久精品蜜桃| 嫩草伊人久久精品少妇av杨幂| 欧美粗暴jizz性欧美20| 欧美黑人巨大videos精品| 亚洲欧美久久久| 蜜臀久久精品| 日本精品一区二区三区在线观看视频| 热三久草你在线| 青青草国产精品亚洲专区无| 欧美在线观看视频一区| 欧美极品一区二区三区| 蜜臀久久久久久久| 成人片免费看| 国产乱码精品一区二区亚洲| 99在线精品免费视频九九视| 久久这里只有| 久久xxxx| 中国字幕a在线看韩国电影| 日日夜夜免费精品| 2023国产精品久久久精品双| 国产一区二区三区国产精品| 免费高清在线一区| 日韩免费福利视频| 久久爱www成人| 亚洲人成精品久久久| 秋霞国产精品| 久久精品福利| 欧美日韩夜夜| 亚洲一级淫片| 国产亚洲欧洲| 99久久夜色精品国产亚洲1000部| 麻豆精品蜜桃视频网站| 日韩福利视频一区| 在线一区视频| 99久久婷婷| 日韩免费av| 国产九九精品| 亚洲我射av| 国产亚洲激情| 亚洲精品一二三区区别| 1024精品一区二区三区| 久久电影tv| 国产一区二区三区精品在线观看| 欧美性www| 日韩国产欧美三级| 亚洲欧洲专区| 美女91精品| 荡女精品导航| 国产成人精品一区二区三区免费| 国产精品乱战久久久| 欧美日韩午夜| 日本亚洲视频在线| 红桃视频国产精品| 老鸭窝毛片一区二区三区| 日韩一区二区免费看| 欧美午夜不卡| 老司机久久99久久精品播放免费| 欧美在线资源| 亚洲激情五月| 国产视频一区免费看| 丝袜亚洲精品中文字幕一区| 日韩视频二区| 性一交一乱一区二区洋洋av| 自由日本语亚洲人高潮| 亚洲综合精品| 免费在线看一区| 丝袜脚交一区二区| 蜜臀久久99精品久久久久久9| 中文字幕日韩亚洲| 日韩精品首页| 国产欧美日本| 亚洲精品极品| 亚洲精品无播放器在线播放| 蜜臀久久久99精品久久久久久| 亚洲欧美日本国产专区一区| 一级欧美视频| 婷婷久久免费视频| 国产精品亚洲四区在线观看| 国产精品久久久久久妇女| 国产 日韩 欧美一区| 精品国产乱码久久久| 亚洲欧美在线专区| 国产66精品| 久久久精品久久久久久96| 成人精品中文字幕| 国产一区二区三区自拍| 亚洲综合日韩| 欧美亚洲一级| 精品久久免费| 亚洲精品.com| 日本不良网站在线观看| 四虎影视精品| 精品1区2区3区4区| 亚洲美女91| 国产欧美日韩精品一区二区免费 | 青青青国产精品| 美女久久久精品| 欧美成人a交片免费看| 欧美理论视频| 最新国产精品| 国产精品99精品一区二区三区∴ | 亚洲综合小说| 久久av免费| 日韩免费福利视频| 狠狠色综合网| 国产欧美日韩影院| 色偷偷色偷偷色偷偷在线视频| 亚洲精品a级片| 人人精品久久| av最新在线| 自拍日韩欧美| 国产欧美日韩一级| 欧美日中文字幕| 日韩动漫一区| 亚洲精品福利电影| 视频一区二区三区中文字幕| 国产福利资源一区| 亚洲精品一二三区区别| 国产麻豆精品久久| 在线亚洲人成| 男女性色大片免费观看一区二区| 久久精品国产99久久| 不卡中文字幕| 日韩在线卡一卡二| 老牛国内精品亚洲成av人片 | 狠狠色综合网| 国产精品任我爽爆在线播放| 91精品婷婷色在线观看| 亚洲欧洲日韩精品在线| 四季av一区二区凹凸精品| 影音国产精品| 亚洲三级观看| 伊人久久在线| 国产调教一区二区三区| 日韩亚洲在线| 精品一区二区三区四区五区| 首页亚洲欧美制服丝腿| 黄色aa久久| 日本午夜精品视频在线观看| 91精品国产调教在线观看|