Python multiprocess中Queue问题
首先直接上代码
from multiprocessing import Pool, Manager, Queue
from time import sleep
def fun(num, queue) :
print "hello %d" % num
return
def main() :
pool = Pool(processes=4)
q = Queue()
for k in range(5) :
pool.apply_async(fun, args=(k, q))
pool.close()
pool.join()
return
if __name__ == '__main__' :
main()
- 本想把Queue实例作为参数传到进程中,可是没有得到想要的结果
- 在笔者的环境中没有报错,但是结果不是预期的
- 也可能报错 RuntimeError: Queue objects should only be shared between process through inheritance.
解决
- 把multiprocessing.Queue()换成multiprocessing.Manager().Queue()