parameters: (self, op)
return_statement: return task
docstring: Choose a ps task index for the given `Operation`.
  
      Args:
        op: A `Operation` to be placed on ps.
  
      Returns:
        The next ps task index to use for the `Operation`. Greedily
        places the op on the least-loaded ps task so far, as determined
        by the load function.
docstring_summary: Choose a ps task index for the given `Operation`.
docstring_tokens: Choose a ps task index for the given Operation .
function: def __call__(self, op):
      """Choose a ps task index for the given `Operation`.
  
      Args:
        op: A `Operation` to be placed on ps.
  
      Returns:
        The next ps task index to use for the `Operation`. Greedily
        places the op on the least-loaded ps task so far, as determined
        by the load function.
      """
      task = np.argmin(self._ps_loads)
      self._ps_loads[task] += self._load_fn(op)
      return task
function_tokens: def __call__ ( self , op ) : task = np . argmin ( self . _ps_loads ) self . _ps_loads [ task ] += self . _load_fn ( op ) return task