长时间运行的批处理过程在Ubuntu中过早终止

时间:2016-12-30 10:17:42

标签: python shell ubuntu keras

我正在尝试批量使用Keras训练深度神经网络的一些python脚本,我遇到的问题是,当第一个python脚本完成时,整个批处理停止。

我尝试编写一个python包装器,但仍然没有任何变化。我想知道这个问题是否与OS有关,或者它与Keras框架或python有关。

第一次尝试是编写一个shell脚本:

#!/bin/sh
for i in {1..10}; do python my_experiment.py; done

但是,在运行my_experiment.py一次后,整批停止。

我尝试使用Python:

import subprocess
import os

def main():
    for i in xrange(10):
        subprocess.call(['python', os.path.join(os.getcwd(), 'my_experiment.py')])

if __name__ == "__main__":
    main()

但我仍然得到相同的结果。

以前有人遇到过这个问题吗?如果不是,我会欢迎想法尝试找出正在发生的事情。

此外,我通过SSH在远程计算机上运行此过程,方法如下:

$ ./batch_script.sh &
$ disown

或者在python的情况下:

$ python batch_script.py &
$ disown

干杯

1 个答案:

答案 0 :(得分:1)

如果某些进程仍然具有链接到tty的标准输入或输出,或者某些子进程没有被正确地取消,则可能会发生这种情况。

可能的解决方法是使用终端多路复用器(如screentmux)来解决在SSH注销后让后台进程运行的问题。它比使用/不使用过程容易得多。

通常,您将运行screentmux,您将获得新的终端会话。你将能够分离'从该会话开始,让它继续运行。在您注销并再次登录后,您将能够重新加入'运行会话并查看进程的输出,就好像您从未注销过一样。