diff --git a/tests/run_examples.sh b/tests/run_examples.sh
index 7bba463f41f29d92968e6a3dd1509564f85305dc..af4871aee1b74400294717af95053ffdb008695f 100755
--- a/tests/run_examples.sh
+++ b/tests/run_examples.sh
@@ -68,14 +68,17 @@ export TAGFAIL
 export TAGPASS
 export EXAMPLES_DIR
 
+# See https://prefetch.net/blog/2017/08/17/using-xargs-and-lscpu-to-spawn-one-process-per-cpu-core/
+CPU_CORES=$(lscpu -p=CORE,ONLINE | grep -c 'Y')
+
 # Build debug binary
 cargo +$TOOLCHAIN build
 # Iterate over every Ion script in examples directory
-ls -1 $EXAMPLES_DIR/*.ion | xargs -P 0 -n 1 -I {} bash -c "check_return_value {}"
+ls -1 $EXAMPLES_DIR/*.ion | xargs -P $CPU_CORES -n 1 -I {} bash -c "check_return_value {}"
 # Iterate over every parameter set
-ls -1 $EXAMPLES_DIR/*.params | xargs -P 0 -n 1 -I {} bash -c "test_cli {}"
+ls -1 $EXAMPLES_DIR/*.params | xargs -P $CPU_CORES -n 1 -I {} bash -c "test_cli {}"
 
 # Build debug binary for testing structopt argument parsing
 cargo +$TOOLCHAIN build --features=advanced_arg_parsing
 # Iterate over every parameter set
-ls -1 $EXAMPLES_DIR/*.params | xargs -P 0 -n 1 -I {} bash -c "test_cli {}"
+ls -1 $EXAMPLES_DIR/*.params | xargs -P $CPU_CORES -n 1 -I {} bash -c "test_cli {}"