Discuss / Python / 请教一个问题?

请教一个问题?

Topic source

llillz

#1 Created at ... [Delete] [Delete and Lock User]
2. 学习进程池(Pool)的时候,为什么我的CPU只有4个核心,但是当我把Pool(4)改成Pool(5)或就能够同时执行5个进程,难道不是最多只能执行4个进程吗?CPU核心数是不是决定了最多能同时执行的进程(比如4核心最多同时执行4个进程)?

求学者号

#2 Created at ... [Delete] [Delete and Lock User]

你认为你的电脑cpu是4核就最多只能执行4个进程么?你看电影的时候再多干几件其他的事情就做不了了?你打开任务管理器看一下进程数,多到你数不过来,为什么会有这么多进程执行呢?进程数不基于cpu核数,操作系统会对并行的进程做分配,放在多核里运行,单核里的多个进程交替运行,单个进程的多个线程交替运行。

llillz

#3 Created at ... [Delete] [Delete and Lock User]

你可能没明白我的意思,我的意思是CPU的核心数是不是决定了同一时刻下可以执行的进程,再申明下我问题中同时的含义。

cpu对于进程的处理是以时序的形式处理的,也就是时间片段内处理可执行的线程(进程中可执行的最小单元),操作系统并发执行是多个进程在一段时间内交错执行的。不考虑超线程的话,4核应该是只有4个线程在执行的,也就是4个进程。

llillz

#5 Created at ... [Delete] [Delete and Lock User]

非常感谢,受教了。感觉这块地方涉及到操作系统的知识了,下次要好好看看书。

木二Lin

#6 Created at ... [Delete] [Delete and Lock User]

上面的回答应该说都不准确,intel的cpu都带有超线程技术,你的cpu是4个物理核心,但是一般是八线程的,系统模拟出四个逻辑处理器,所以是可以被认为是8线程的。大部分处理器都是这样的,看任务管理器的cpu逻辑处理器图有几个就可以看出你的电脑是几个线程的cpu。


  • 1

Reply