Many references say that, Python GIL lower down the performance of multi threading code in multi core machine, since each thread will need to acquire the GIL before executioin.
In other words, it looks like GIL make a multi threading Python program to a single thread mode in fact.
For example:
(1) Thread A get GIL, execute some time, release GIL
(2) Thread B get GIL, execute some time, release GIL
...
However, after some simple experiments, I found that although GIL lower down the performance, the total CPU usage may exceed 100% in multiple core machine.
from threading import Thread
def test():
while 1:
pass
for i in range(4):
t = Thread(target=test)
t.start()
On a 4 core, 8 thread machine, the above program will occupy around 160% CPU usage. Is there anything I misunderstand? Two threads can execute exactly at the same moment? Or the CPU usage calculation has bias or something wrong?
Thanks