func (p Pool) Finish() {
	p.wg.Wait()
	p.wp.StopWait()
}
Finish waits until no more tasks are running, then shuts down the worker pool. This allows new
tasks to be added to the pool after it's called by using a WaitGroup to determine when all tasks
are done.
package cmdutil
import (
	"sync"
	"github.com/gammazero/workerpool"
)
type Pool struct {
	wp *workerpool.WorkerPool
	wg *sync.WaitGroup
}
func NewPool(parallel int) Pool {
	return Pool{wp: workerpool.New(parallel), wg: &sync.WaitGroup{}}
}
func (p Pool) Submit(f func()) {
	p.wg.Add(1)
	p.wp.Submit(f)
}
func (p Pool) Done() {
	p.wg.Done()
}