gilはCPU密集型マルチスレッドと単一スレッドで効率比較を行う


直接単一スレッドでforループを実行し、5回実行し、実行時間を計算する
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サイクルで、5つのスレッドを使って走り、実行時間を統計します
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)

2つのテスト結果を見るとCPythonでは,CPU密集型にとってマルチスレッドは特に大きな利点はなく,1つのスレッドとの実行時間の差は特に大きくない.