title: JoinableQueue join() method blocking main thread even after task_done()
body: <p>In below code, if I put <code>daemon = True</code> , consumer will quit before reading all queue entries. If consumer is non-daemon, Main thread is always blocked even after the <code>task_done()</code> for all the entries.</p>
  
  <pre><code>from multiprocessing import Process, JoinableQueue
  
  import time
  
  
  def consumer(queue):
      while True:
          final = queue.get()
          print (final)
          queue.task_done()
  
  
  def producer1(queue):
      for i in "QWERTYUIOPASDFGHJKLZXCVBNM":
          queue.put(i)
  
  if __name__ == "__main__":
  
      queue = JoinableQueue(maxsize=100)
      p1 = Process(target=consumer, args=((queue),))
      p2 = Process(target=producer1, args=((queue),))
      #p1.daemon = True
      p1.start()
      p2.start()
      print(p1.is_alive())
      print (p2.is_alive())
      for i in range(1, 10):
          queue.put(i)
          time.sleep(0.01)
      queue.join()
  </code></pre>