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


    前言

    深度学习跑代码的时候,需要跑很多个对比实验,要么开多个窗口并行执行代码,要么就写在一个 .sh 文件里面顺序执行,前面一种并行执行多个任务出结果很慢,而后一种如果想添加任务或者删除某个任务就得全部停止,查了一圈发现市面上似乎没有队列执行代码的工具。

    LucQ

    用一晚上和一早上折腾写出了这个软件 github,Linux User Command Queue.

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    准备

    需要两个窗口,可以是独立的两个 terminal,也可以是两个 tmux。

    第一个窗口

    在第一个窗口执行命令

    lucq --mode exec
    
    • 1

    这就会启动一个程序等待用户提交任务并执行

    第二个窗口

    和前面一样,我们的所有操作都是基于 lucq 这个程序的,这里我们做测试提交一个 ls 命令

    lucq --add ls
    
    • 1

    或者长一点的 python 文件命令用双引号扩起来

    lucq --add "test.py -a 1"
    
    • 1

    如果需要使用特定的 python 虚拟环境或者其他任何环境,可以使用 --executor 选项

    lucq --add test.py --executor /home/test/venv/bin/python
    
    • 1

    查看进度

    命令提交完成后,第一个窗口中的程序自动会按照我们提交的顺序开始执行命令,并记录运行时间,我们可以通过 --list 命令查看

    lucq --list
    
    • 1
    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]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    其中 o 代表执行完毕,r 代表正在执行,x 代表未执行,e 代表执行错误。

    删除任务

    如果我们发现某个代码有错误,需要从队列中删除,可以使用命令

    lucq --remove 9
    
    • 1

    这个 9 通过 --list 命令查询获得 id 写入即可

    清除数据库

    lucq 使用了 sqlite 作为数据库后台,有时候历史命令太长,可以使用命令重置数据库

    lucq --clean
    
    • 1
  • 相关阅读:
    leetCode 45.跳跃游戏 II 贪心算法
    C++阶段05笔记03【C++提高编程资料(string容器、vector容器、deque容器、stack容器)】
    oracle执行计划中,同一条语句块,在不同情况下执行计划不一样问题。子查询,union 导致索引失效。
    D. Game With Array
    在屏幕上打印杨辉三角
    VR开发(一)——SteamVR实现摇杆移动
    汇聚荣拼多多运营策略是怎么样的?
    音视频同步原理
    【NoSQL数据库技术与应用】【课本代码】【课后题答案】【持续更新】
    css5定位
  • 原文地址:https://blog.csdn.net/isinstance/article/details/133824147