title: Multiprocessing threadpool concatenates arguments
body: <p>I have a very long list <code>data</code>, lets assume that it looks like this:</p>
  
  <pre><code>[(a, a, 1),
  (b, b, 1),
  (c, c, 1),
  (d, d, 1),
  (e, e, 1),
  (f, f, 1),
  (g, g, 1),
  (h, h, 1),
  (i, i, 1),]
  </code></pre>
  
  <p>I am trying to use multithreading as follows:</p>
  
  <pre><code>from multiprocessing.dummy import Pool as ThreadPool
  pool = ThreadPool(4)
  pool.starmap(help_func, data)
  </code></pre>
  
  <p>Help_func is as follows:</p>
  
  <pre><code>def help_func(in_vala, in_valb, in_valc):
      print("asking for " + str(in_vala) + " asking for " + str(in_valb))
      receiver(in_vala)
  </code></pre>
  
  <p>and receiver is a simple test function as so:</p>
  
  <pre><code>def receiver(group):
      print(group)
  </code></pre>
  
  <p>When I run my program, I can see that the output from help_func is correct, i.e., it enumerates the values of <code>data</code>.</p>
  
  <p>However, when I look at the values generated at the receiver(), I notice some weird prints which look like:</p>
  
  <pre><code>a
  b
  c
  de
  e
  f
  gh
  i
  </code></pre>
  
  <p>I am struggling to see why this might be the case. There is something that goes wrong when calling receiver, perhaps due to receiver bring non-blocking may be? </p>
  
  <p>How should I go around this issue.</p>
  
  <p>Also, when I use ThreadPool(1), I do not see this issue. My actual problem has a much larger function that is called from help_func, so I would like to run it under multiple threads ideally.</p>