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

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

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

瀏覽:9日期: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| 欧美成人精品三级网站| 91精品一区二区三区综合| 久久精品国产亚洲aⅴ| 欧美中文一区| 国产精品羞羞答答在线观看| 国产日韩欧美一区在线| 日韩一区二区三区四区五区| 日韩av中文字幕一区二区三区| 日本欧美一区二区| 国产精品一区二区精品| 97精品国产一区二区三区| 久久视频国产| 亚洲精品综合| 久久亚洲精品中文字幕| 色综合www| 日韩精品一级中文字幕精品视频免费观看 | 国产精久久久| 日韩电影免费网站| 欧美天堂亚洲电影院在线观看| 免费看黄色91| 欧美激情视频一区二区三区免费 | 免费视频一区二区三区在线观看| 久久亚洲道色| 狠狠久久婷婷| 欧美极品一区二区三区| 久久裸体视频| 涩涩涩久久久成人精品| 老牛影视精品| 中文字幕亚洲精品乱码| 中文在线а√天堂| 日韩中文字幕一区二区高清99| 国产精品成人一区二区不卡| 久久国产精品毛片| 中文字幕在线视频网站| 日韩av不卡在线观看| 99精品国产一区二区三区| 久久精品 人人爱| 午夜在线精品偷拍| 亚洲伦乱视频| 国产精品观看| 亚洲香蕉久久| 一本一道久久a久久精品蜜桃| 精品久久久网| 国产精品综合| 青草久久视频| 亚洲v天堂v手机在线| 午夜精品影院| 国产在线日韩| 亚洲一级影院| 午夜国产一区二区| 中文字幕系列一区| 给我免费播放日韩视频| 国产精品一站二站| 欧美日韩a区| 日韩精品第一| 亚洲精品日本| 蜜桃久久av一区| 视频一区日韩精品| 久久黄色影视| 美女性感视频久久| 福利一区在线| 久久国产毛片| 午夜日韩在线| 亚洲视频电影在线| 蜜臀av亚洲一区中文字幕| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲精品影院在线观看| 91久久精品无嫩草影院| 国产精品一区二区三区四区在线观看| 国产亚洲精品美女久久 | 精品国产乱码久久久| 伊伊综合在线| 亚洲精品2区| 日韩在线麻豆| 国产精品porn| 美女网站视频一区| 中文久久精品| 国产麻豆精品| 国产在线|日韩| 亚洲一区有码| 久久中文字幕一区二区三区| 国产极品模特精品一二| 日韩伦理一区| 综合激情五月婷婷| 久久国产尿小便嘘嘘| 国产aⅴ精品一区二区三区久久| 日韩欧美一区二区三区在线观看| 一区三区视频| 成人在线观看免费视频| 亚洲网站视频| 国产精品主播| 在线视频日韩| 精品亚洲a∨一区二区三区18| 91九色精品国产一区二区| 国产精品免费不| 亚洲五月婷婷| 麻豆精品久久| 亚洲一区导航| 激情婷婷欧美| 国产精品亚洲片在线播放| 女同性一区二区三区人了人一| 国产精品大片| 亚洲精品无吗| 欧美专区一区二区三区| 九九久久国产| 日韩精品a在线观看91| 成人日韩在线观看| 久久午夜影院| 国产欧美日韩在线一区二区| 中文亚洲欧美| 自拍日韩欧美| 欧美日韩第一| 欧美中文一区二区| av资源新版天堂在线| 日韩精品欧美成人高清一区二区| 激情综合网站| 99精品在线观看| 成人在线丰满少妇av| 九九九精品视频| 国产一区二区三区免费在线| 国产精品一页| 国产精品va视频| 欧美精品成人| 国产精品一区二区三区美女| 91精品丝袜国产高跟在线| 一区二区三区网站| 蜜臀av性久久久久蜜臀aⅴ流畅| 西西人体一区二区| 一本色道久久精品| 亚洲午夜精品久久久久久app| 99久久久国产精品美女| 久久精品国语| 影视先锋久久| 午夜一区在线| 日韩av网站在线观看| 国产精品欧美三级在线观看 | 国产日韩在线观看视频| 欧美日韩xxxx| 成人精品国产亚洲| 亚洲午夜黄色| 国产午夜久久| 欧美综合精品| 日本а中文在线天堂| 91精品一区国产高清在线gif| 黄色成人精品网站| 日韩一区二区三区免费视频| 国产免费av一区二区三区| 国产成人久久精品麻豆二区| 日韩精品免费一区二区在线观看| 欧美va亚洲va日韩∨a综合色| 日韩视频免费| 国产精品久久久免费| 日本蜜桃在线观看视频| 亚洲一区二区三区久久久| 精品视频在线你懂得| 日韩在线精品| 日韩黄色av| zzzwww在线看片免费| 亚洲综合福利| 鲁鲁在线中文| 欧美日韩亚洲国产精品| 狠狠干成人综合网| 成人午夜毛片| 欧美在线精品一区| 亚洲精品一二三区区别| 久久一区欧美| 日本欧美在线| 99热精品在线| 国产成人精品亚洲线观看| 在线综合亚洲| 精品美女在线视频| 深夜日韩欧美| 99riav国产精品| 日韩电影免费网站| 欧美国产极品| 亚洲久久视频| 久久精品一区二区不卡| 国产九九精品| 综合一区av| 亚洲综合另类| 亚洲午夜精品久久久久久app| 国产精品xx| 久久精品免费看| 国产精品网站在线看| 最新国产精品| 免费观看久久av| 日韩欧美网址| 国内精品美女在线观看| 国产精品久久久久9999高清| 日韩福利视频一区| 亚洲精品美女91| 欧美日韩精品一本二本三本| 九九色在线视频| 国产精品国产一区| 四虎国产精品免费观看| 红杏一区二区三区| 日本一区二区三区中文字幕| 九九色在线视频| 日韩一区电影|