title: Multiple iterables as arguments in python multiprocessing
body: <p>I have 3 dimensional dataset <code>(100,64,3000)</code>, and i am finding features using multiprocessing. I am doing multiprocessing across channel. Such as each process cover 8 channels out of 64. 
  Here is my code</p>
  
  <pre><code>import numpy as np
  import time
  from multiprocessing import Process,current_process,Pool
  
  sub=1
  def cal_feature(ch):
      data=np.load('data_{}.npy'.format(sub))
      return np.mean(data[:,ch:ch+8,:],-1)
  
  
  # multiprocessing
  if __name__ == '__main__':
  
      start = time.time()
      ch=[i for i in range(0,64,8)]
      with Pool(8) as p:
          result = p.map(cal_feature,(ch) )
      print(time.time()-start)
  </code></pre>
  
  <p>You can create dummy data this way.</p>
  
  <pre><code>import numpy as np
  np.save('data_1', np.random.randint(0, 100, size=(100, 64, 3000)))
  np.save('data_2', np.random.randint(0, 100, size=(100, 64, 3000)))
  np.save('data_3', np.random.randint(0, 100, size=(100, 64, 3000)))
  np.save('data_4', np.random.randint(0, 100, size=(100, 64, 3000)))
  </code></pre>
  
  <p>In my code i have to define which data has to be picked manually <code>sub=1</code>. What I want to modify the above code such that it pick <code>sub =1</code> and then find feature for all channels in a multiprocess way. When its done it move to subject 2 and so on.</p>
  
  <p>EDIT  </p>
  
  <pre><code>ind_result=[result[i:i+8] for i in range(0,(len(sub)*8),8)]
  for i,j in zip(sub,ind_result):
      np.save('subject_0_{}'.format(i),np.concatenate((j),1)   ) 
  </code></pre>