python3.14 无GIL锁版本多线程初体验

1、下载python3.14

windows64位下载地址

2、安装

安装的时候注意勾选
在这里插入图片描述

3、测试

import time
import threading
import queue
def cpu_bound_task ( n, thread_id ,q):
    count = 0
    for i in range (n):
        count += i*i
    q.put(count)

N = 100000000

def run_with_threads (num):
    threads = []
    start = time.time()
    q=queue.Queue()
    # 创建并启动多个线程
    for i in range ( num ):
        t = threading.Thread(target=cpu_bound_task, args=(N//num, i,q))
        threads.append(t)
        t.start()

    # 等待所有线程完成
    for t in threads :
        t.join()

    end = time.time()
    result=[]
    while not q.empty():
        result.append(q.get())
    #print(result)
    print ( f'Total time taken: {end - start: .2f} seconds' )

if __name__ == '__main__' :
    for th in [1, 2, 4, 8, 16, 32]:
        run_with_threads(th)

CPU为I9 10980XE 18个内核,逻辑处理器36个,分别在1, 2, 4, 8, 16, 32线程时,时间分别如下:

Total time taken:  7.41 seconds
Total time taken:  3.80 seconds
Total time taken:  2.16 seconds
Total time taken:  1.14 seconds
Total time taken:  0.76 seconds
Total time taken:  0.61 seconds

可以看见,其对于性能的提升到了8线程以后并非网上说的线性提升,具体原因不清楚。
以往在CPU密集型运算时,需要多进程来处理,耗费内存大,改正无GIL锁版的多线程后,大幅提升了CPU利用率,内存占用大幅下降,还是非常有意义的。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐