title: Pickle TypeError inside numpy.save()
body: <p>I have a function to compute features and then save the features into pickle.</p>
  
  <pre><code>test_knn_feats = NNF.predict(X_test) 
  np.save('data/knn_feats_%s_test.npy' % metric , test_knn_feats)
  </code></pre>
  
  <p>In the function, if <code>n_jobs</code> is more than 1, then code below will execute.</p>
  
  <pre><code>fest_feats =[]
  pool = Pool(processes = self.n_jobs) 
  for i in range(X.shape[0]):
      test_feats.append(pool.apply_async(self.get_features_for_one(X[i:i+1])))
  pool.close()
  pool.join()
  
  return np.vstack(test_feats)
  </code></pre>
  
  <p>However, there is error occur:</p>
  
  <pre><code>TypeError                                 Traceback (most recent call last)
  &lt;ipython-input-96-4f707b7cd533&gt; in &lt;module&gt;()
       12     print(test_knn_feats)
       13     # Dump the features to disk
  ---&gt; 14     np.save('data/knn_feats_%s_test.npy' % metric , test_knn_feats)
  
  /opt/conda/lib/python3.6/site-packages/numpy/lib/npyio.py in save(file, arr, allow_pickle, fix_imports)
      507         arr = np.asanyarray(arr)
      508         format.write_array(fid, arr, allow_pickle=allow_pickle,
  --&gt; 509                            pickle_kwargs=pickle_kwargs)
      510     finally:
      511         if own_fid:
  
  /opt/conda/lib/python3.6/site-packages/numpy/lib/format.py in write_array(fp, array, version, allow_pickle, pickle_kwargs)
      574         if pickle_kwargs is None:
      575             pickle_kwargs = {}
  --&gt; 576         pickle.dump(array, fp, protocol=2, **pickle_kwargs)
      577     elif array.flags.f_contiguous and not array.flags.c_contiguous:
      578         if isfileobj(fp):
  </code></pre>
  
  <p>The function <code>get_features_for_one</code> will return a list, shown below.</p>
  
  <pre><code>...
  knn_feats = np.hstack(return_list)
  assert knn_feats.shape == (239,) or knn_feats.shape == (239, 1)
  return knn_feats
  </code></pre>
  
  <p>*Update:</p>
  
  <pre><code>test_feats =[]      
  pool = Pool(processes = self.n_jobs) 
  for i in range(X.shape[0]):
      test_feats.append(pool.apply_async(self.get_features_for_one, (X[i:i+1],)))
  test_feats= [res.get() for res in test_feats]        
  pool.close()
  pool.join()
  return np.vstack(test_feats)
  </code></pre>