gpt4 book ai didi

python - Python 中的多处理队列

转载 作者:太空狗 更新时间:2023-10-29 17:58:17 24 4
gpt4 key购买 nike

我正在尝试将队列与 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()

最佳答案

试试这个:

import multiprocessing

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

def worker():
for item in iter( q.get, None ):
do_work(item)
q.task_done()
q.task_done()

q = multiprocessing.JoinableQueue()
procs = []
for i in range(num_procs):
procs.append( multiprocessing.Process(target=worker) )
procs[-1].daemon = True
procs[-1].start()

source = ['hi','there','how','are','you','doing']
for item in source:
q.put(item)

q.join()

for p in procs:
q.put( None )

q.join()

for p in procs:
p.join()

print "Finished everything...."
print "num active children:", multiprocessing.active_children()

关于python - Python 中的多处理队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6672525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com