xargs -P is the parallel loop you already have
Processing a thousand files one at a time on a machine with eight cores is a waste of seven cores. xargs -P runs the command in parallel and -n sets the batch size.
find . -name '*.png' -print0 | xargs -0 -P 8 -n 10 optimiseUse -print0 and -0 so a file name with a space does not become two arguments.
shell