如何选择CPU到运行python脚本?

How can I choose CPU to run python script?

我想同时运行 2 个不同的程序。第一个是 python 脚本。其他程序是模拟程序(Gazebo)。简而言之,我想将命令从 python 脚本发送到 Gazebo 模拟。我已经知道 ROS 和多处理,但我的问题不是这些。当 Gazebo 工作时,python 脚本的 fps 值降低。所以我想 运行 python 脚本通过选择 CPU 而不影响 Gazebo。我还想通过选择另一个 CPU 核心来 运行 Gazebo。我的请求与多处理不同,因为即使我没有将 python 脚本连接到 Gazebo,fps 也在下降。例如,我正在启动 python 脚本。之后我从另一个终端启动 Gazebo。这些都是独立的作品。即使在这种情况下,它们也会相互影响。结果,即使我使用多进程,它们也会相互影响。我错了吗?这个问题我该怎么办

编辑:我也可以用不同类型提出问题:假设我们有 2 个不同的 python 脚本。两个 python 脚本都使用多处理。我在两个脚本中创建了 2 个进程。当我运行这2个文件在不同终端时,一共会用到4个不同的CPU吗?简而言之,python 文件使用的进程与来自不同终端的其他 python 代码 运行 中的进程不同还是相同?

虽然 technically possible 将进程固定到一组特定的核心(而且我确信在其他 OS 上也有等效项)。它极有可能无济于事,因为操作系统已经非常擅长确定何时何地执行进程。如果您在 运行 这两个脚本时看到速度变慢,这可能是各种各样的事情,但我不仅会查看 cpu 使用情况,还会查看磁盘 activity、总线利用率( raspberry pi 例如总线容量非常小),两个程序之间的交互不良(什么都不做时等待)等

要回答您的第二个问题,我想我必须解决一个误解:进程远不止创建它的文件那么简单。单个文件通常是进程的入口点,但是 OS 然后将该文件读入内存,加载与其关联的库,然后开始执行。那时,您可以删除该文件,程序将继续正常运行,直到它尝试加载 OS 未抢先加载的其他资源。如果您尝试启动同一可执行文件的第二个副本,OS 将经历相同的加载和执行过程,但它会从一块新的内存开始(进程获得自己的私有内存 space).为此,每个 python 进程实际上都以相同的可执行文件(python.exe 在 windows 上)开始,获得自己的进程 ID 和自己的内存:

python 可执行文件通常会加载一个文本文件并对其执行某些操作 (your_script.py),但这实际上与进程的管理方式关系不大。当您在脚本中调用 multiprocessing 时,python 将使用一些 OS 命令来启动一个全新的进程,就像打开一个新的终端 window (尽管它通常不会得到它有自己的实际图形用户界面 window)