在Screen和Bash中使用多进程
在学校的不同计算机上用SSH运行一个Python脚本。每台计算机有8个核心。我使用GNU Screen,这样可以从一个进程中分离出来。
我想知道哪种方式更好:
- 运行几个不同的screen会话。
- 运行一个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,你肯定希望有办法检测到这一点并把你的任务转移到其他地方)。我接触过的大多数集群都有 Torque、Maui 或者 qsub
命令。建议你去了解一下这些工具。