我在使用两个多处理时看到退出时出现RunTime错误。每个都有一个不同的可连接队列。下面是一个显示问题的简单代码示例。
import multiprocessing
import time
q_1 = multiprocessing.JoinableQueue()
q_2 = multiprocessing.JoinableQueue()
def process():
pool_1 = multiprocessing.Pool(1, worker_1,(q_1,))
pool_2 = multiprocessing.Pool(1, worker_2,(q_2,))
for i in range(3):
q_1.put(i)
q_1.join()
q_2.join()
pool_1.close()
pool_2.close()
def worker_1(input_q):
while True:
val = input_q.get(True)
print("1:"+str(val))
q_2.put(val)
input_q.task_done()
def worker_2(input_q):
while True:
val = input_q.get(True)
time.sleep(2)
print("2:"+str(val))
input_q.task_done()
当退出时我收到以下错误
Exception RuntimeError: RuntimeError('cannot join current thread',) in <Finalize object, dead> ignored
我有两个可用的环境,
Ubuntu 12.04.3 LTS,python 2.7.3 - 我收到了错误。
RHEL 6.3,python 2.6.6 - 我没有收到错误。
搜索关闭()后加入池的大多数建议,但如果我这样做,则该过程永远不会退出。此外,我发现的所有示例只有一个池,而不是两个或更多(使用单个池/队列不会产生错误)。
有什么导致此错误的想法?