在使用Cpython运行时,python程序如何可能使用多个内核?

在使用Cpython运行时,python程序如何可能使用多个内核?,python,python-3.x,python-multiprocessing,python-multithreading,gil,Python,Python 3.x,Python Multiprocessing,Python Multithreading,Gil,所有文档都指出,使用线程库运行python程序并不能真正使您在Cpython解释器的多个内核上运行该程序。然而,CPU使用率表明它使用了多个内核。这怎么可能 我确实验证了python解释器是Cpython使用的 import platform platform.python_implementation() # output-> 'Cpython' Python版本-3.5.2 操作系统-ubuntu 线程代码 import threading import math def fizz

所有文档都指出,使用
线程
库运行python程序并不能真正使您在Cpython解释器的多个内核上运行该程序。然而,CPU使用率表明它使用了多个内核。这怎么可能

我确实验证了python解释器是Cpython使用的

import platform
platform.python_implementation() # output-> 'Cpython'
Python版本-3.5.2
操作系统-ubuntu

线程代码

import threading
import math

def fizz():
  print ("start")
  for i in range (1, 100000000):
    math.sqrt(i)

  print(" exit")

threads = []

n = 4
for _ in range (n):
  t = threading.Thread(target=fizz)
  threads.append(t)

for t in threads:
  t.start()

for t in threads:
  t.join()

print ("Done")
运行程序前的CPU使用率(运行
top

运行程序时的CPU使用率

op - 09:29:29 up 235 days, 11:43,  8 users,  load average: 0.39, 0.24, 0.14
Tasks: 530 total,   1 running, 522 sleeping,   7 stopped,   0 zombie
%Cpu0  : 26.0 us,  0.7 sy,  0.0 ni, 73.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.3 st
%Cpu1  : 24.5 us,  1.0 sy,  0.0 ni, 74.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.3 st
%Cpu2  : 25.0 us,  0.3 sy,  0.0 ni, 74.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  : 26.1 us,  0.0 sy,  0.0 ni, 73.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

我认为该文档意味着使用
线程
并不能真正同时运行多个线程,它意味着您只能在一个进程中使用一个核心容量,即使您同时运行4或8个线程

您确定使用多核的程序与您编写的程序相同吗?请检查哪个进程正在使用CPU alsoYes,尝试3个线程,然后是2个线程,以检查您的程序是否正在使用内核。嗯,我明白了。除了使用
top
命令外,还有其他方法可以可视化cpu核心的使用情况吗?
op - 09:29:29 up 235 days, 11:43,  8 users,  load average: 0.39, 0.24, 0.14
Tasks: 530 total,   1 running, 522 sleeping,   7 stopped,   0 zombie
%Cpu0  : 26.0 us,  0.7 sy,  0.0 ni, 73.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.3 st
%Cpu1  : 24.5 us,  1.0 sy,  0.0 ni, 74.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.3 st
%Cpu2  : 25.0 us,  0.3 sy,  0.0 ni, 74.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  : 26.1 us,  0.0 sy,  0.0 ni, 73.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st