识别不同进程返回的元素

时间:2017-10-05 13:19:51

标签: python multiprocessing

考虑以下情况:

class A:
   def __init__(self):
      self.b_list = []

   def add_element(b)
      self.b_list.append(b)

class B:
   def __init__(self,x):
      self.x = x

class C:
   def __init__(self,a,other_data):
      self.a = a
   def find_new_b(self):
      ....


def solve(c):
   return c.find_new_b()

class A的每个实例都有class B的实例列表,这些实例以增量方式添加。

我需要遍历class A的所有实例,并为每个实例找到class B的新元素。

我使用multiprocessing来执行此操作

list_of_c_elements = [...]
pool = multiprocessing.Pool()
results = pool.map(solve, list_of_c_elements)

问题

在结果中,我有一个结果列表,我想了解class A的新实例所属的class B实例。 class B的每个实例都是通用的,我希望将这两个类分开。

考虑解决方案

solve()更改为:

def solve(c):
   return (c.a, c.find_new_b())

我必须将class A的所有元素与返回的元素进行比较(非常低效)。 我做不了类似的事情:

for output in results:
   output[0].add_element(output[1])

因为返回的class A实例是另一个实例。

有没有更有效的方法来实现我的目标?

1 个答案:

答案 0 :(得分:1)

C还可以在成员中保留id(a),如有必要,您可以生成索引字典{id(a): a}。请注意,id()的所有调用当然必须在主过程中发生,以产生可用的结果。