来自具有可连接队列的python多处理池的运行时错误

来自具有可连接队列的python多处理池的运行时错误,python,python-multiprocessing,Python,Python Multiprocessing,当使用两个多处理池时,我在退出时看到运行时错误。每个池都有不同的可连接队列。下面是一个简单的代码示例,显示了该问题 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

当使用两个多处理池时,我在退出时看到运行时错误。每个池都有不同的可连接队列。下面是一个简单的代码示例,显示了该问题

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
Exception RuntimeError:RuntimeError('cannotjoin current thread',)处于忽略状态
我有两个可用的环境,在

Ubuntu12.04.3 LTS,Python2.7.3-我得到了错误

RHEL6.3,Python2.6.6-我没有得到错误

搜索大多数建议都涉及在close()之后加入池,但如果我这样做,该过程将永远不会退出。此外,我发现的所有示例都只有一个池,而不是两个或更多(使用单个池/队列不会产生错误)


你知道是什么导致了这个错误吗?

经过一些实验,它肯定与python版本有关。在Ubuntu上运行python 2.6.9或2.7.5可以正常工作,只有2.7.3失败,这是python的Ubuntu版本。