pythonpython百例

108-多线程的效率

2018-08-09  本文已影响1人  凯茜的老爸

python的多线程有一个GIL(全局解释器锁),使得多个线程,某一时刻只有一个线程发送给CPU处理。所以多线程不适用计算密集型应用,更适合IO密集型应用。
以下两次计算5000万次加法运算和不用多线程相比,没有效率的提升。因为CPU有上下文切换,甚至可能多线程更慢。

import time
import threading

def calc():
    result = 0
    for i in range(1, 50000001):
        result += i
    print(result)

if __name__ == '__main__':
    start = time.time()
    t1 = threading.Thread(target=calc)
    t1.start()
    t2 = threading.Thread(target=calc)
    t2.start()
    t1.join()  # 挂起主进程,当t1线程执行完后才继续向下执行
    t2.join()
    end = time.time()
    print(end - start)
上一篇 下一篇

猜你喜欢

热点阅读