溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

gil在密集型多線程和單線程執(zhí)行效率對(duì)比是怎樣的

發(fā)布時(shí)間:2021-12-03 10:01:27 來(lái)源:億速云 閱讀:125 作者:柒染 欄目:編程語(yǔ)言

這篇文章給大家介紹gil在密集型多線程和單線程執(zhí)行效率對(duì)比是怎樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

直接用單線程執(zhí)行for循環(huán),執(zhí)行5次,計(jì)算執(zhí)行的時(shí)間

import logging
import datetime

FORMAT = '%(threadName)s %(thread)d %(message)s'
logging.basicConfig(format=FORMAT, level=logging.INFO)

start = datetime.datetime.now()

def calc():
    sum = 0
    for _ in range(100000000):
        sum += 1

calc()
calc()
calc()
calc()
calc()

delta = (datetime.datetime.now() - start).total_seconds()
logging.info(delta)

用多線程的方式,同樣的for循環(huán),使用5個(gè)線程跑,統(tǒng)計(jì)執(zhí)行的時(shí)間

import threading
import logging
import datetime

FORMAT = '%(threadName)s %(thread)d %(message)s'
logging.basicConfig(format=FORMAT, level=logging.INFO)

start = datetime.datetime.now()

def calc():
    sum = 0
    for _ in range(100000000000):
        sum += 1
lst = []
for i in range(5):
    t = threading.Thread(target=calc, )
    lst.append(t)
    t.start()

for i in lst:
    i.join()

delta = (datetime.datetime.now() - start).total_seconds()
logging.info(delta)

兩個(gè)測(cè)試結(jié)果來(lái)看,在CPython中,對(duì)于CPU密集型而言,多線程沒(méi)特別大的優(yōu)勢(shì),和一個(gè)線程的執(zhí)行時(shí)間相差不是特別大

關(guān)于gil在密集型多線程和單線程執(zhí)行效率對(duì)比是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI