0
考慮以下情況中的元素:識別不同進程返回
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
實例是另一個實例。
有沒有更高效的方法來實現我的目標?
對於第二個考慮的解決方案,你是什麼意思,你不能使用它「因爲返回的類型A的對象是另一個對象」? – martineau
在一次迭代中,我可以多次調用與A類型相同的對象的解決方案,並獲得同一對象的超過2個結果。因此,對結果中的每個元素使用返回的輸出[0]並執行output [0] .add_b_element(輸出[1])將添加到2個不同的A類型對象。 – newbie
所以,你說'list_of_c_elements'可以有重複的'C'實例嗎?似乎是這樣 - 避免兩次添加一個b元素 - 無論你做什麼都會成爲問題。注意類'A'沒有名爲'add_b_element()'的方法。 – martineau