在SO网站上,有很多关于在Python多进程池的starmap方法中传递多个参数的问题。但我的问题是,我是否可以在该方法中发送队列对象,以便在不同进程之间共享?
我可以使用线程和多进程Process方法来实现这一点,但不能使用进程池的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方法也应该支持。
p = {}
没有任何用处,我认为是吗? - inc42