我想在Python中使用多处理库中的队列。在执行下面的代码之后(打印语句正常工作),但在我调用加入队列并且仍然存在之后,进程不会退出。我怎样才能终止剩余的进程?Python中的多处理队列
谢谢!
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()
你有没有任何理由在完成后将None放入队列中?我认为task_done()可以帮助避免这个问题?我试图在本页面底部的示例之后对代码进行建模:http://docs.python.org/library/queue.html – aerain
这实际上不工作:( – aerain
未对解决方案进行评级,但暗示如何让它运行:在def worker的第一次使用之前移动“q =”声明行()... ;-) – Dilettant