title: Async function runs in a sync (serial) way, tasks block each other
body: <p>I do not get any acceleration using asyncio. This snippet still runs the same fashion as a sync job. Most of the examples use asyncio.sleep() to impose delay, my question is what if part of the code poses the delay depending on the input parameters.</p>
  
  <pre><code>async def c(n):
      #this loop is supposed to impose delay
      for i in range(1, n * 40000):
          c *= i
     return n
  
  async def f():
      tasks = [c(i) for i in [2,1,3]]
      r=[]
      completed, pending = await asyncio.wait(tasks)
      for item in completed:
          r.append(item.result())
  
      return r
  
  if __name__=="__main__":
      loop = asyncio.get_event_loop()
      k=loop.run_until_complete(f())
      loop.close()
  </code></pre>
  
  <p>I expect to get [1,2,3] but I do not (there is no time difference when running in serial also)</p>