- Notifications
You must be signed in to change notification settings - Fork10
Fast command line app in rust/tokio to run commands in parallel. Similar interface to GNU parallel or xargs plus useful features. Listed in Awesome Rust utilities.
License
aaronriekenberg/rust-parallel
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Run commands in parallel and aggregate outputs. Async application usingtokio.
Example commands anddetailed manual.
Listed inAwesome Rust - utilities
Similar interface toGNU Parallel orxargs plus useful features:
- More than 10x faster than GNU Parallelin benchmarks
- Run commands fromstdin,input files, or
:::
arguments - Automatic parallelism to all cpus, orconfigure manually
- Transform inputs withvariables orregular expressions
- Preventoutput interleaving and maintain input order with
-k
/--keep-order
- Shell mode to runbash functions andcommands
- TUI progress bar usingindicatif
- Path cache
- Command timeouts
- Structured debug logging
- Dry run mode
- Configurable error handling
WithHomebrew installed, run
brew install rust-parallel
- Download a pre-built release fromGithub Releases for Linux, MacOS, or Windows.
- Extract the executable and put it somewhere in your $PATH.
Install the latest version of this app fromcrates.io:
$ cargo install rust-parallel
The samecargo install rust-parallel
command will also update to the latest version after initial installation.
- Examples - complete runnable commands to give an idea of overall features.
- Manual - more detailed manual on how to use individual features.
- Benchmarks
- Output Interleaving - output interleaving in rust-parallel compared with other commands.
- anyhow used for application error handling to propogate and format fatal errors.
- clap command line argument parser.
- itertools using
multi_cartesian_product
to process:::
command line inputs. - indicatif optional TUI progress bar.
- regex optional regular expression capture groups processing for
-r
/--regex
option. - tokio asynchronous runtime for rust. From tokio this app uses:
async
/await
functions (aka coroutines)- Singleton
CommandLineArgs
instance usingtokio::sync::OnceCell
. - Asynchronous command execution using
tokio::process::Command
tokio::sync::Semaphore
used to limit number of commands that run concurrently.tokio::sync::mpsc::channel
used to receive inputs from input task, and to send command outputs to an output writer task. To await command completions, use the elegant property that when allSenders
are dropped the channel is closed.
- tracing structured debug and warning logs.
tracing::Instrument
is used to provide structured debug logs.
- which used to resolve command paths for path cache.
About
Fast command line app in rust/tokio to run commands in parallel. Similar interface to GNU parallel or xargs plus useful features. Listed in Awesome Rust utilities.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.