激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - python 多線程與多進(jìn)程效率測(cè)試

python 多線程與多進(jìn)程效率測(cè)試

2022-02-18 00:27Silent丿丶黑羽 Python

這篇文章主要介紹了python 多線程與多進(jìn)程效率測(cè)試,在Python中,計(jì)算密集型任務(wù)適用于多進(jìn)程,IO密集型任務(wù)適用于多線程、接下來(lái)看看文章得實(shí)例吧,需要的朋友可以參考一下喲

1、概述

在Python中,計(jì)算密集型任務(wù)適用于多進(jìn)程,IO密集型任務(wù)適用于多線程

正常來(lái)講,多線程要比多進(jìn)程效率更高,因?yàn)檫M(jìn)程間的切換需要的資源和開(kāi)銷(xiāo)更大,而線程相對(duì)更小,但是我們使用的Python大多數(shù)的解釋器是Cpython,眾所周知Cpython有個(gè)GIL鎖,導(dǎo)致執(zhí)行計(jì)算密集型任務(wù)時(shí)多線程實(shí)際只能是單線程,而且由于線程之間切換的開(kāi)銷(xiāo)導(dǎo)致多線程往往比實(shí)際的單線程還要慢,所以在 python 中計(jì)算密集型任務(wù)通常使用多進(jìn)程,因?yàn)楦鱾€(gè)進(jìn)程有各自獨(dú)立的GIL,互不干擾。

而在IO密集型任務(wù)中,CPU時(shí)常處于等待狀態(tài),操作系統(tǒng)需要頻繁與外界環(huán)境進(jìn)行交互,如讀寫(xiě)文件,在網(wǎng)絡(luò)間通信等。在這期間GIL會(huì)被釋放,因而就可以使用真正的多線程。

上面都是理論,接下來(lái)實(shí)戰(zhàn)看看實(shí)際效果是否符合理論

2、代碼練習(xí)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
"""多線程多進(jìn)程模擬執(zhí)行效率"""
 
 
from multiprocessing import Pool
from threading import Thread
import time, math
 
 
def simulation_IO(a):
    """模擬IO操作"""
    time.sleep(3)
 
 
def simulation_compute(a):
    """模擬計(jì)算密集型任務(wù)"""
    for i in range(int(1e7)):
        math.sin(40) + math.cos(40)
    return
 
 
def normal_func(func):
    """普通方法執(zhí)行效率"""
    for i in range(6):
        func(i)
    return
 
 
def mp(func):
    """進(jìn)程池中的map方法"""
    with Pool(processes=6) as p:
        res = p.map(func, list(range(6)))
    return
 
 
def asy(func):
    """進(jìn)程池中的異步執(zhí)行"""
    with Pool(processes=6) as p:
        result = []
        for j in range(6):
            a = p.apply_async(func, args=(j, ))
            result.append(a)
        res = [j.get() for j in result]
 
 
def thread(func):
    """多線程方法"""
    threads = []
    for j in range(6):
        t = Thread(target=func, args=(j, ))
        threads.append(t)
        t.start()
    for t in threads:
        t.join()
 
 
def showtime(f, func, name):
    """
    計(jì)算并展示函數(shù)的運(yùn)行時(shí)間
    :param f: 多進(jìn)程和多線程的方法
    :param func: 多進(jìn)程和多線程方法中需要傳入的函數(shù)
    :param name: 方法的名字
    :return:
    """
    start_time = time.time()
    f(func)
    print(f"{name} time: {time.time() - start_time:.4f}s")
 
 
def main(func):
    """
    運(yùn)行程序的主函數(shù)
    :param func: 傳入需要計(jì)算時(shí)間的函數(shù)名
    """
    showtime(normal_func, func, "normal")
    print()
    print("------ 多進(jìn)程 ------")
    showtime(mp, func, "map")
    showtime(asy, func, "async")
    print()
    print("----- 多線程 -----")
    showtime(thread, func, "thread")
 
 
if __name__ == "__main__":
    print("------------ 計(jì)算密集型 ------------")
    func = simulation_compute
    main(func)
    print()
    print()
    print()
    print("------------ IO 密集型 ------------")
    func = simulation_IO
    main(func)

3、運(yùn)行結(jié)果

python 多線程與多進(jìn)程效率測(cè)試

  線性執(zhí)行 多進(jìn)程(map) 多進(jìn)程(async) 多線程
計(jì)算密集型 16.0284s 3.5236s 3.4367s 15.2142s
IO密集型 18.0201s 3.0945s 3.0809s 3.0041s

從表格中很明顯的可以看出:

  • 計(jì)算密集型任務(wù)的速度:多進(jìn)程 >多線程> 單進(jìn)程/線程
  • IO密集型任務(wù)速度: 多線程 > 多進(jìn)程 > 單進(jìn)程/線程。

所以,針對(duì)計(jì)算密集型任務(wù)使用多進(jìn)程,針對(duì)IO密集型任務(wù)使用多線程

到此這篇關(guān)于python 多線程與多進(jìn)程效率測(cè)試 的文章就介紹到這了,更多相關(guān)python 多線程內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://www.cnblogs.com/jiakecong/p/14690762.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 国产精品久久久久久影院8一贰佰 | 97伦理 | 天天看成人免费毛片视频 | 国产品久久 | 久久网国产精品 | 久久亚洲第一 | 亚洲片在线观看 | 国产91在线亚洲 | 日韩在线播放中文字幕 | 一级黄色免费观看视频 | 色多多视频导航 | 中国av免费观看 | 第一福利在线 | 日韩黄网站 | 亚洲成人国产综合 | 色综合狠狠| 51国产偷自视频区视频小蝌蚪 | 久久久久无码国产精品一区 | 久久精品亚洲精品国产欧美kt∨ | 失禁高潮抽搐喷水h | 国产电影精品久久 | 369看片你懂的小视频在线观看 | 日韩视频一区 | 蜜桃视频网站在线观看 | 欧美高清视频一区 | 欧美一级在线看 | 91网视频在线观看 | 在线无码 | 成人免费自拍视频 | 黄色特级一级片 | 91美女视频在线观看 | 悠悠成人资源亚洲一区二区 | 欧美高清第一页 | 欧美乱码精品一区 | 依依成人综合 | 黄色片免费视频 | 一级免费a | 国产一区二区三区高清 | 天天色图片 | 极品美女一级毛片 | 香蕉视频破解 |