aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2023-01-14 18:44:24 +0100
committerDaniel Schadt <kingdread@gmx.de>2023-01-14 18:44:24 +0100
commit922355a064698cf0c099f3656d02e89961f67602 (patch)
tree0c47bd74dcdce8d54396568a3784e88a7184f5a2 /src
parentd87a968e39d37a49eb19f44f0081ca98ebc9c662 (diff)
downloadhittekaart-922355a064698cf0c099f3656d02e89961f67602.tar.gz
hittekaart-922355a064698cf0c099f3656d02e89961f67602.tar.bz2
hittekaart-922355a064698cf0c099f3656d02e89961f67602.zip
make number of threads configurable per CLI
Diffstat (limited to 'src')
-rw-r--r--src/main.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
index 77af69f..9c3250e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -4,6 +4,7 @@ use clap::Parser;
use color_eyre::eyre::{bail, Result};
use indicatif::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressStyle};
use is_terminal::IsTerminal;
+use rayon::ThreadPoolBuilder;
mod gpx;
mod layer;
@@ -16,11 +17,17 @@ struct Args {
#[arg(required = true)]
files: Vec<PathBuf>,
+ /// Minimum zoom level to generate tiles for.
#[arg(long, default_value_t = 0)]
min_zoom: u32,
+ /// Maximum zoom level to generate tiles for.
#[arg(long, default_value_t = 19)]
max_zoom: u32,
+
+ /// Number of threads to use. Set to 0 to use all available CPU cores.
+ #[arg(long, short, default_value_t = 0)]
+ threads: usize,
}
fn main() -> Result<()> {
@@ -32,6 +39,10 @@ fn main() -> Result<()> {
bail!("Max zoom cannot be smaller than min zoom!");
}
+ ThreadPoolBuilder::new()
+ .num_threads(args.threads)
+ .build_global()?;
+
let progress_style =
ProgressStyle::with_template("[{elapsed}] {prefix:.cyan} {wide_bar} {pos:.green}/{len}")?;
let zoom_style =