前言
深度学习跑代码的时候,需要跑很多个对比实验,要么开多个窗口并行执行代码,要么就写在一个 .sh
文件里面顺序执行,前面一种并行执行多个任务出结果很慢,而后一种如果想添加任务或者删除某个任务就得全部停止,查了一圈发现市面上似乎没有队列执行代码的工具。
LucQ
用一晚上和一早上折腾写出了这个软件 github,Linux User Command Queue.
bash
Linux user command queue
Usage: lucq [OPTIONS]
Options:
-m, --mode <MODE> Run mode (cli or exec) [default: cli]
-a, --add <ADD> Add one command [default: null]
-r, --remove <REMOVE> Remove one command [default: null]
-l, --list List all commands
-c, --clean Clean database
-h, --help Print help
-V, --version Print version
准备
需要两个窗口,可以是独立的两个 terminal,也可以是两个 tmux。
第一个窗口
在第一个窗口执行命令
bash
lucq --mode exec
这就会启动一个程序等待用户提交任务并执行
第二个窗口
和前面一样,我们的所有操作都是基于 lucq
这个程序的,这里我们做测试提交一个 ls
命令
bash
lucq --add ls
或者长一点的 python
文件命令用双引号扩起来
bash
lucq --add "test.py -a 1"
如果需要使用特定的 python
虚拟环境或者其他任何环境,可以使用 --executor
选项
bash
lucq --add test.py --executor /home/test/venv/bin/python
查看进度
命令提交完成后,第一个窗口中的程序自动会按照我们提交的顺序开始执行命令,并记录运行时间,我们可以通过 --list
命令查看
bash
lucq --list
bash
S | Jobs
o | id[1], user[test], add_time[2023-10-14 15:41:21], used_time[00:00:10], command[test.py]
o | id[2], user[test], add_time[2023-10-14 15:41:22], used_time[00:00:10], command[test.py]
o | id[3], user[test], add_time[2023-10-14 15:41:22], used_time[00:00:10], command[test.py]
o | id[4], user[test], add_time[2023-10-14 15:46:45], used_time[00:00:10], command[test.py -a 1]
o | id[5], user[test], add_time[2023-10-14 15:47:29], used_time[00:00:10], command[test.py -a 1]
o | id[6], user[test], add_time[2023-10-14 15:47:35], used_time[00:00:10], command[test.py -a 1]
r | id[7], user[test], add_time[2023-10-14 15:47:36], used_time[00:00:00], command[test.py -a 1]
x | id[8], user[test], add_time[2023-10-14 15:48:48], used_time[00:00:00], command[test.py -a 1]
x | id[9], user[test], add_time[2023-10-14 15:49:01], used_time[00:00:00], command[test.py -a 1]
其中 o
代表执行完毕,r
代表正在执行,x
代表未执行,e
代表执行错误。
删除任务
如果我们发现某个代码有错误,需要从队列中删除,可以使用命令
bash
lucq --remove 9
这个 9
通过 --list
命令查询获得 id
写入即可
清除数据库
lucq
使用了 sqlite
作为数据库后台,有时候历史命令太长,可以使用命令重置数据库
bash
lucq --clean