title: dask: difference between client.persist and client.compute
body: <p>I am confused about what the difference is between <code>client.persist()</code> and <code>client.compute()</code> both seem (in some cases) to start my calculations and both return asynchronous objects, however not in my simple example:</p>
  
  <p>In this example </p>
  
  <pre><code>from dask.distributed import Client
  from dask import delayed
  client = Client()
  
  def f(*args):
      return args
  
  result = [delayed(f)(x) for x in range(1000)]
  
  x1 = client.compute(result)
  x2 = client.persist(result)
  </code></pre>
  
  <p>Here <code>x1</code> and <code>x2</code> are different but in a less trivial calculation where <code>result</code> is also a list of <code>Delayed</code> objects, using <code>client.persist(result)</code> starts the calculation just like <code>client.compute(result)</code> does.</p>