title: why should i join() after start() in multithreading in python?
body: <p>just as the sample code shows:</p>
  
  <pre><code>for temp in range(0, 10):
         thread = threading.Thread(target = current_post.post)
         thread.start()
         threads.append(thread)
  
  for current in range(10):
          threads[current].join()
  </code></pre>
  
  <p>the code is just a part of a python file, but it stands for most circumstances: i should execute <code>join()</code> after <code>start()</code> in multithreading. i have been confusing by it for a few days. as we all know, when we execute <code>thread.start()</code>, a new thread then starts, python runs through different threads automatically, thats all we need. if so, why should i add <code>thread.join()</code> after <code>start()</code>? <code>join()</code> means <strong>waiting until the current thread finished IMO</strong>. but does it means a kind of single-thread? i have to wait each thread to finish their tasks, its not multithreading! <code>join()</code> only means executing the specified function one by one IMO. cannot <code>start()</code> finish the multi-threading perfectly? why should i add <code>join()</code> function to let them finish one by one? thx for any help :)</p>