【发布时间】:2020-07-20 07:14:22
【问题描述】:
假设我有 500 个查询要做,使用 4 个进程。我想将查询平均分配给每个进程,然后汇集来自这些查询的结果,然后使用结果重新启动进程:
我的伪代码是:
def somefunc(subqueries, dict1, dict2):
# do something to subqueries and then add the results to dict1 and dict2
queries = [......]
iteration = 5
manager = mp.Manager()
dict1 = manager.dict()
dict2 = manager.dict()
while iteration > 0:
manager = mp.Manager()
nextIteration = manager.list()
redistributedQueries = redistribute(queries)
p1 = Process(target = some_func(queries[0], dict1, dict2, nextIteration))
p1.start(); p1.join()
p2 = Process(target = some_func(queries[1], dict1, dict2, nextIteration))
p2.start(); p2.join()
p3 = Process(target = some_func(queries[2], dict1, dict2, nextIteration))
p3.start(); p3.join()
p4 = Process(target = some_func(queries[3], dict1, dict2, nextIteration))
p4.start(); p4.join()
#get results from p1, p2, p3, p4, and then append them into a list
queries = resultsFromPreviousProcesses
iteration -= 1
我的问题是,杀死经理然后重新实例化它是否有效(需要使用经理,因为结果将被共享?
【问题讨论】:
标签: python multiprocessing distributed-computing