1 个稳定版本
1.3.0 | 2024年4月16日 |
---|
#397 在 异步
145KB
2.5K SLoC
rust-parallel
并行运行命令并汇总输出。使用 tokio 的异步应用程序。
在 Awesome Rust - 工具 中列出
类似于 GNU Parallel 或 xargs 的界面,并具有实用功能
- 从 stdin、输入文件 或
:::
参数 运行命令 - 自动并行到所有 cpu,或 手动配置
- 使用 正则表达式 转换输入
- 防止 输出交错
- 在基准测试中非常快
- Shell 模式运行 bash 函数 和 命令
- TUI 进度条 使用 indicatif
- 路径缓存
- 命令超时
- 结构化调试日志
- 干运行模式
- 可配置的错误处理
内容
安装
推荐
- 从 Github 发布 下载 Linux、MacOS 或 Windows 的预构建版本。
- 解压可执行文件并将其放置在您的 $PATH 中。
对于手动安装/更新
$ cargo install rust-parallel
- 相同的
cargo install rust-parallel
命令在初始安装后也会更新到最新版本。
文档
技术栈
- anyhow 用于应用程序错误处理,以传播和格式化致命错误。
- clap 命令行参数解析器。
- itertools 使用
multi_cartesian_product
处理:::
命令行输入。 - indicatif 可选的 TUI 进度条。
- regex 可选的正则表达式捕获组处理,用于
-r
/--regex
选项。 - tokio rust 的异步运行时。从此应用使用 tokio,
async
/await
函数(也称为协程)- 使用
tokio::sync::OnceCell
创建的单例CommandLineArgs
实例。 - 使用
tokio::process::Command
执行异步命令。 tokio::sync::Semaphore
用于限制同时运行的命令数量。tokio::sync::mpsc::channel
用于从输入任务接收输入,并将命令输出发送到输出写入任务。要等待命令完成,请使用以下优雅属性:当所有Senders
都被丢弃时,通道关闭。
- tracing 结构化调试和警告日志。
tracing::Instrument
用于提供结构化调试日志。
- which 用于解决路径缓存中的命令路径。
依赖项
~17–33MB
~536K SLoC