深度学习小工具:Linux 环境下的用户命令和脚本顺序执行器

前言

深度学习跑代码的时候,需要跑很多个对比实验,要么开多个窗口并行执行代码,要么就写在一个 .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
相关推荐
疯狂吧小飞牛1 分钟前
修改crashkernel为0
linux·服务器
maosheng11469 小时前
RHCSA的第一次作业
linux·运维·服务器
wifi chicken9 小时前
Linux 端口扫描及拓展
linux·端口扫描·网络攻击
旺仔.2919 小时前
Linux 信号详解
linux·运维·网络
放飞梦想C9 小时前
CPU Cache
linux·cache
Hoshino.4110 小时前
基于Linux中的数据库操作——下载与安装(1)
linux·运维·数据库
恒创科技HK11 小时前
通用型云服务器与计算型云服务器:您真正需要哪些配置?
运维·服务器
播播资源12 小时前
CentOS系统 + 宝塔面板 部署 OpenClaw源码开发版完整教程
linux·运维·centos
源远流长jerry12 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
twc82912 小时前
大模型生成 QA Pairs 提升 RAG 应用测试效率的实践
服务器·数据库·人工智能·windows·rag·大模型测试