Linux——如何在ubuntu上后台运行python程序?
2018-11-20 本文已影响67人
SpareNoEfforts
1. 在终端运行python的时候可以用:
- 告诉程序只能看到1号GPU,其他的GPU它不可见
CUDA_VISIBLE_DEVICES=1 python your_file.py
- 告诉程序能看到12号GPU,其他的GPU它不可见
CUDA_VISIBLE_DEVICES=0,1 python your_file.py
CUDA_VISIBLE_DEVICES="0,1" python your_file.py
2. 在后台运行命令,使得有缓冲输出
nohup python [PythonSourceFile] ( > [log file] ) 2>&1 &
如果没有指定输出文件,nohup会将输出放到nohup.out文件中,但在程序运行过程中nohup.out文件中不能实时的看到python的输出,原因是python的输出有缓冲。
举例说明:nohup python -u your_file.py > my_out.log 2>&1 &
3. 在后台运行命令,使得无缓冲输出
-
方案1
使用-u参数,使python输出不进行缓冲,命令格式如下
nohup python -u startup.py > abc.log 2>&1 &
#使用GPU的时候并且无缓冲输出:
使用GPU的时候并且无缓冲输出:
CUDA_VISIBLE_DEVICES=1 nohup python -u yourfile.py >my_out 2>&1 &
#注意CUDA_VISIBLE_DEVICES在nohup前面
- 方案二
export PYTHONUNBUFFERED=1
nohup python (> [log file]) 2>&1 &
4. 如何kill nohup的进程
#筛选需要kill的进程pid
ps -aux|grep "process name"
kill -9 pid