Ich bin derzeit versucht, eine Klasse zu implementieren intensive Kalkül zu tun:Python-Prozess merge Ergebnisse
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))
ich unabhängig Kalkül berechnen wollen, setzen Sie die Ergebnisse in einem sub_set für jeden Prozess und verschmelzen alle sub_set in der set_of_things (das Objekt im echten Code).
Ich habe versucht, Warteschlange ohne Erfolg zu verwenden, irgendwelche Ratschläge?
P.S: habe versucht, den Code in Can a set() be shared between Python processes? aber auch ohne Glück zu reproduzieren.
Shared Memory in Python mit. Multiprocessing ist perfekt [möglich] (https://docs.python.org/2/library/multiprocessing.html#sharing-state-between-processes). –
Die Ergebnisse = multiprocessing.Manager(). List() hat getan, was ich will, danke! – Grundoc
@Michael Fouarakis, ja, aber es ist nicht "echte" geteilte Erinnerung. Ich habe es von der Prozessdefinition beschrieben. – Sergius