Очередь многопроцессорной обработки в Python

Я пытаюсь использовать очередь с библиотекой многопроцессорной обработки в Python. После выполнения приведенного ниже кода (операторы печати работают), но процессы не завершаются после того, как я вызываю join в очереди, и они все еще живы. Как мне завершить оставшиеся процессы?

Спасибо!

def MultiprocessTest(self):
  print "Starting multiprocess."
  print "Number of CPUs",multiprocessing.cpu_count()

  num_procs = 4
  def do_work(message):
    print "work",message ,"completed"

  def worker():
    while True:
      item = q.get()
      do_work(item)
      q.task_done()

  q = multiprocessing.JoinableQueue()
  for i in range(num_procs):
    p = multiprocessing.Process(target=worker)
    p.daemon = True
    p.start()

  source = ['hi','there','how','are','you','doing']
  for item in source:
    q.put(item)
  print "q close"
  q.join()
  #q.close()
  print "Finished everything...."
  print "num active children:",multiprocessing.active_children()
12
задан FogleBird 12 July 2011 в 23:49
поделиться