title: Multiprocessing a function with several inputs
body: <p>In Python the <code>multiprocessing</code> module can be used to run a function over a range of values in parallel. For example, this produces a list of the first 100000 evaluations of f.</p>
  
  <pre><code>def f(i):
      return i * i
  
  def main():
      import multiprocessing
      pool = multiprocessing.Pool(2)
      ans = pool.map(f, range(100000))
  
      return ans
  </code></pre>
  
  <p>Can a similar thing be done when f takes multiple inputs but only one variable is varied? For example, how would you parallelize this:</p>
  
  <pre><code>def f(i, n):
      return i * i + 2*n
  
  def main():
      ans = []
      for i in range(100000):
          ans.append(f(i, 20))
  
      return ans
  </code></pre>