众所周知,Python由于历史遗留的GIL问题,不借助特殊的手段,是无法在多核上运行的。
于是写了一段多线程跑死循环,想验证一下:
import threading, multiprocessing
def loop():
x = 0
while True:
x ^= 1
print(x)
for i in range(multiprocessing.cpu_count()):
t = threading.Thread(target=loop)
t.start()
这一验证验证出问题了,通过性能监视发现,轻轻松松跑满了8个逻辑核。如下图
此时运行环境是Win 11,Python 3.10。然后我又换到WSL环境测试,Kali-Linux,Python 3.9.7,得到了一样的结论。。
是哪里出了问题?