再测python3.13a —— python3.13是否移除了GIL的限制(续)

前文:


相关资料:




再次编译python3.13a 版本。


依赖环境安装:

见:

https://www.cnblogs.com/devilmaycry812839668/p/17604336.html


给出完整的依赖安装:

sudo apt install gcc

sudo apt install make

sudo apt install openssl

sudo apt install libssl-dev

sudo apt install libffi-dev

sudo apt install zlib1g-dev

sudo apt install build-essential

sudo apt install gcc g++ libffi-dev build-essential checkinstall

sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

修改配置命令(开启gil的移除功能的编译):


正确配置命令:

./configure --prefix=/home/devil/python3.13a --disable-gil


完整的配置命令:(具体安装路径需要自己修改)

./configure --prefix=/home/devil/python3.13a --disable-gil
make
make test
sudo make install

测试代码:

import threading
import time
 
def print_time( threadName, delay):
    s = 0

    for i in range(10000000):
        s+=i

    print(threadName, s)

p1=threading.Thread( target=print_time, args=("Thread-1", 4, ) )
p2=threading.Thread( target=print_time, args=("Thread-2", 4, ) )
p3=threading.Thread( target=print_time, args=("Thread-3", 4, ) )
p4=threading.Thread( target=print_time, args=("Thread-4", 4, ) )
p5=threading.Thread( target=print_time, args=("Thread-5", 4, ) )
p6=threading.Thread( target=print_time, args=("Thread-6", 4, ) )
p7=threading.Thread( target=print_time, args=("Thread-7", 4, ) )
p8=threading.Thread( target=print_time, args=("Thread-8", 4, ) )

a = time.time()
p1.start()
p2.start()
p3.start()
p4.start()
p5.start()
p6.start()
p7.start()
p8.start()

p1.join()
p2.join()
p3.join()
p4.join()
p5.join()
p6.join()
p7.join()
p8.join()
print(time.time()-a)

运行情况:

image


很不幸,这说明这个编译后的python依旧不支持 no-gil,具体原因未知,或许是这个本身3.13a+版本就不支持呢,但是GitHub上的讨论又都说可以,有些搞不清情况,这东西到底是咋弄呢,看来这次尝鲜再次失败,静等官方正式推出python3.13后再看吧,3.12已经推出了,估计3.13真的不远了。



posted on 2024-02-05 13:23  Angry_Panda  阅读(565)  评论(0)    收藏  举报

导航