考虑以下情况:
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
实例是另一个实例。
有没有更有效的方法来实现我的目标?
答案 0 :(得分:1)
C
还可以在成员中保留id(a)
,如有必要,您可以生成索引字典{id(a): a}
。请注意,id()
的所有调用当然必须在主过程中发生,以产生可用的结果。