Vagrant 主管:为什么我能在一台4核机器上运行4个以上的进程?

Vagrant 主管:为什么我能在一台4核机器上运行4个以上的进程?,vagrant,multiprocessing,tornado,supervisord,Vagrant,Multiprocessing,Tornado,Supervisord,我正在一台4核机器上工作,并使用一个流浪者盒子来托管我的应用程序。我已经将Supervisor配置为在不同端口上生成5个进程,并且我可以轻松地独立运行所有进程。这是否意味着主管生成的每个进程都不遵循单个核心?运行进程是操作系统的任务。它决定运行什么以及何时运行。 您有4个内核这一事实意味着您可以并行执行4个不同的“代码”(4个不同的线程不一定来自同一进程) 这意味着,如果您将4个进程放在具有4个内核的同一台机器上,它们很可能都将并行运行。 如果您在任何给定时刻有5个进程,那么只有4个进程正在运行

我正在一台4核机器上工作,并使用一个流浪者盒子来托管我的应用程序。我已经将Supervisor配置为在不同端口上生成5个进程,并且我可以轻松地独立运行所有进程。这是否意味着主管生成的每个进程都不遵循单个核心?

运行进程是操作系统的任务。它决定运行什么以及何时运行。 您有4个内核这一事实意味着您可以并行执行4个不同的“代码”(4个不同的线程不一定来自同一进程)

这意味着,如果您将4个进程放在具有4个内核的同一台机器上,它们很可能都将并行运行。
如果您在任何给定时刻有5个进程,那么只有4个进程正在运行,但看起来它们都是并行运行的,因为它们将执行“上下文切换”,您的核心将随机停止运行1个进程并切换到另一个

如果您想将进程限制为cpu核心,则必须设置进程的cpu相关性:但这很少有用。请澄清,主机或虚拟机上有4个核心?即使主机上有4个内核,vm也不会有4个内核,除非您声明它。这是否意味着如果在所有5个进程上同时(理论上)提交作业,其中一个进程将失败?不,它不会失败,它将只是“等待”。实际上,您甚至不会注意到,您的一个核心只需在一个进程上工作几毫秒,然后切换到另一个进程几毫秒,然后返回到第一个进程,依此类推。这仅仅意味着它们不会真正在parralel中运行,但它们“似乎”会这样做,这只是意味着同时只能运行4个进程。操作系统将同时处理5个进程的运行。简单的方法是使用循环制,它使每个进程在一个循环中运行的机会均等。