code: func NewPool(config *PoolConfig) (*Pool, error) {
  	finalConfig := getPoolConfig(config)
  	hardwareId, err := getHardwareId()
  	if err != nil {
  		return nil, err
  	}
  	return &Pool{
  		config:  finalConfig,
  		id:      hardwareId,
  		wg:      &sync.WaitGroup{},
  		exit:    make(chan bool),
  		workers: make([]*worker, finalConfig.NumWorkers),
  		jobs:    make(chan *Job, finalConfig.BatchSize),
  	}, nil
  }
docs: // NewPool creates and returns a new pool with the given configuration. You can
  // pass in nil to use the default values. Otherwise, any zero values in config will
  // be interpreted as the default value.