Python解释器使用高达130%的CPU.怎么可能?

yad*_*taf 2 python linux multithreading load

我目前正在使用python 进行一些I/O密集型负载测试.我的所有程序都是尽可能快地向目标服务器发送HTTP请求.

为了管理这个,我使用多达20个线程,因为我基本上绑定了I/O和远程服务器限制.

根据'top',CPython在我的双核计算机上使用了130%CPU峰值.

怎么可能?我以为GIL阻止了这个?或者它是Linux'计算'每个应用程序消耗的资源的方式?

Sve*_*ach 11

顶部100%指单核心.在双核机器上,您可以获得高达200%的可用性.

单个单线程进程只能使用单个核心,因此限制为100%.由于您的进程有多个线程,因此没有什么能阻止它使用这两个核心.

GIL仅阻止纯Python代码同时执行.许多库调用(包括大多数I/O东西)都会释放GIL,所以这里也没问题.与互联网上的大部分FUD相反,GIL很少降低现实世界的性能,如果确实如此,通常比使用线程更好地解决问题.