我目前正在jupyter笔记本中运行python函数,这需要相当长的时间。 Python表示它运行在大约98%的CPU上,但仍然有大约60%的CPU未使用。现在经过一些谷歌搜索我发现这必须与我的处理器的线程做一些事情(我不是一个电脑工程师所以很抱歉,如果这是不正确的)。但是,我想知道是否可以在jupyter笔记本中运行另一个函数,它是否会占用60%未使用的活动中的一部分,或者它会将两个函数中的99%分开,从而减慢两个函数的速度。我希望你们能帮忙。如果有任何不清楚的地方,请告诉我。
P.S。我正在使用2012年底的macbook pro视网膜(我知道),2,5 gHZ intel core i5,带有8 gbs的内存。它有两个核心和一个处理器。
答案 0 :(得分:2)
您拥有Intel Sandybridge或Ivybridge CPU。它有两个具有超线程的物理内核,因此它可能显示为操作系统的4个逻辑内核。
每个核心都有自己的私有L1i / d和L2缓存,但L3(和内存带宽)在核心之间共享。
在另一个物理CPU上运行单独的进程可以通过以下机制减慢第一个进程:
如果L3缓存未命中且内存带宽不是您工作负载的重要瓶颈,那么将两个核心用于单独的任务几乎是纯粹的胜利。
运行4个线程(因此操作系统必须将任务安排到每个物理核心的两个逻辑核心上)会减慢速度,但这更多地取决于工作负载的细节。有关HT如何静态分区或动态共享各种执行资源的asm / cpu-architecture详细信息,请参阅Agner Fog的微型指南(http://agner.org/optimize/)。但真的只是尝试一下,看看。
除了纯吞吐量之外,单个线程可能存在缓存未命中和其他瓶颈的一些停顿,因此您可以以超线程的单核性能为代价获得一些吞吐量。