在Screen和Bash中使用多进程

4 投票
2 回答
1123 浏览
提问于 2025-04-18 12:25

在学校的不同计算机上用SSH运行一个Python脚本。每台计算机有8个核心。我使用GNU Screen,这样可以从一个进程中分离出来。

我想知道哪种方式更好:

  1. 运行几个不同的screen会话。
  2. 运行一个screen进程,并在bash终端中使用&

这两种方式是一样的吗?

我不确定我的实验代码写得是否不好,导致耗时过长(这很有可能),还是我选择使用第一种方式让进程变得很慢。谢谢!

2 个回答

1

我觉得它们差不多。我更喜欢用屏幕,因为这样管理起来更简单。根据脚本的使用情况,这也可能会影响处理的时间。

1

在使用 bash 的时候,我想你可能在做类似这样的事情(假设 /home 是在网络挂载下的):

#!/bin/bash    

for i in {1..$NUM_NODES}
do
    ssh node$i 'python /home/ryan/my_script.py' &
done

从一个 screen 会话中启动这个脚本是没问题的。如果你启动多个 screen 会话,虽然不会提高性能,但会增加管理多个屏幕的复杂性。

要记住,实际上有更好的方法来在集群中分配负载(比如,如果其他人占用了 node7,你肯定希望有办法检测到这一点并把你的任务转移到其他地方)。我接触过的大多数集群都有 TorqueMaui 或者 qsub 命令。建议你去了解一下这些工具。

撰写回答