code: def es(
      theta0, worker, workers=40, sigma=0.1, alpha=0.05, iterations=200
  ):
      dim = theta0.shape[0]
      theta = theta0
      pool = fiber.Pool(workers)
      func = functools.partial(worker, dim, sigma)
  
      for t in range(iterations):
          returns = pool.map(func, [theta] * workers)
          rewards = [ret[0] for ret in returns]
          epsilons = [ret[1] for ret in returns]
          # normalize rewards
          normalized_rewards = (rewards - np.mean(rewards)) / np.std(
              rewards
          )
          theta = theta + alpha * 1.0 / (workers * sigma) * sum(
              [
                  reward * epsilon
                  for reward, epsilon in zip(
                      normalized_rewards, epsilons
                  )
              ]
          )
          if t % 10 == 0:
              print(theta)
      return theta
  
imports: import fiber
  import functools
  import numpy
label_desc: Use image node_id 3 for calling a global function with example usage: es(theta0, worker, workers, sigma, alpha, iterations) and returns: theta