美文网首页pythonpython百例
108-多线程的效率

108-多线程的效率

作者: 凯茜的老爸 | 来源:发表于2018-08-09 13:50 被阅读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)
    

    相关文章

      网友评论

        本文标题:108-多线程的效率

        本文链接:https://www.haomeiwen.com/subject/xpgqbftx.html