【发布时间】:2019-12-30 14:53:27
【问题描述】:
SO 中有很多关于在 python 多处理池的 starmap 方法中传递多个参数的问题。但是我想问的是,我是否可以在方法中发送一个队列对象,可以在不同进程之间共享?
我可以使用线程和多处理 Process 方法来做到这一点,但不能使用 Pool 的 starmap 方法。
from multiprocessing import Process, Queue, Pool
def get_data(pageNo,q):
q.put(pageNo*pageNo)
if __name__ == "__main__":
q = Queue()
p = {}
no_pages = 5
pool_tuple = [(x,q) for x in range(1,no_pages)]
with Pool(processes=3) as pool:
pool.starmap(get_data, pool_tuple)
我想要的是我应该能够将来自不同进程的结果放入队列中。 我得到的错误是:队列对象只能通过继承在进程之间共享
我在传递队列对象的方式上是否做错了什么?既然 Process 支持这一点,那么 Pool 方法也应该能够支持。
【问题讨论】:
标签: python python-3.x python-multiprocessing