Python 处理合并结果

Python process merge results

我目前正在尝试实施 class 来进行密集微积分:

import random
import multiprocessing as mp


class IntensiveStuff:

    def __init__(self):
        self.N = 20
        self.nb_process = 4
        set_of_things = set()

    def lunch_multiprocessing(self):
        processes = []
        for i in range(self.nb_process):
            processes.append(mp.Process(target=self.process_method, args=()))
        [x.start() for x in processes]
        [x.join() for x in processes]
        set_of_things = ... # I want all the sub_set of 'process_method' updated in set_of_things

    def process_method(self):
        sub_set = set()
        for _ in range(self.N):
            sub_set.add(random.randint(100))

我想计算独立微积分,将结果放在每个进程的 sub_set 中,并将所有 sub_set 合并到 set_of_things 中(在实际代码中是对象) .

我尝试使用 Queue 但没有成功,有什么建议吗?

P.S :已尝试重现 中的代码,但也没有成功。

进程不能共享内存,但它们可以通过管道、套接字等进行通信。多处理模块有特殊的对象(我相信,它们在后台使用管道)。 multiprocessing.Queue 应该也可以,但我经常使用这两个对象:

multiprocessing.Manager().list() 和 multiprocessing.Manager().dict()

results = multiprocessing.Manager().list()
# now a bit of your code
processes = []
for i in range(self.nb_process):
   processes.append(mp.Process(target=self.process_method, args=(), results))

def process_method(self, results):
    sub_set = set()
    for _ in range(self.N):
        sub_set.add(random.randint(100))
    results.append(sub_set) # or what you really need to add to results