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

moa*_*lee 2 tornado multiprocessing supervisord vagrant

我正在使用 4 核机器并使用 vagrant box 来托管我的应用程序。我已将 Supervisor 配置为在不同端口上生成 5 个进程,并且可以轻松地独立运行所有进程。这是否意味着 Supervisor 产生的每个进程不遵守单个核心?

Dor*_*ias 5

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

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

  • 不,它不会失败,它只会“等待”。实际上你甚至不会注意到,你的一个核心只会在一个进程上工作几毫秒,然后切换到另一个进程几毫秒,然后返回第一个进程,依此类推。这仅仅意味着它们不会真正并行运行,但它们只是“看起来”这样做 (2认同)