ich bin vor einiger Zeit auf das Modul "multiprocessing" gestoßen und versuche gerade eine Funktion einer Klasseninstanz mit mehreren Prozessen zu starten. Dabei wird auf eine Eigenschaft der Instanz lesend zu gegriffen und eine zweite Eigenschaft geschrieben (String wird erweitert!). Wie schon erwähnt eben mit mehreren Prozessen
Wie zu erwarten funktioniert das nicht!
Daher meine Fragen an euch:
- Ist die Herangehensweise überhaupt die Richtige?
- Falls nein, wie würdet ihr das Problem lösen?
- Falls ja, was fehlt noch um ein lauffähiges Script zu bekommen? Bzw. wo kann ich das nachlesen?
Code: Alles auswählen
# -*- coding: utf-8 -*-
from multiprocessing import Process
class Test_Klasse:
def __init__(self):
# Eigenschaft welche erweitert wird
self.erg_string = "Ergebnisse:\n"
# lesender Zugriff auf Eigenschaft
self.b_dict = {"A":1, "B":2, "C":3, "D":4, "E":5, "F":6}
def gen_diff(self, zahlen_dict):
'''
Bildet Differenz aus zwei Zahlen
und speichert Ergebnis als String in self.erg_string
'''
for i in zahlen_dict:
erg = zahlen_dict[i] - self.b_dict[i]
self.erg_string = self.erg_string + "{} = {}\n".format(i, str(erg))
if __name__ == "__main__":
test_Dict_liste = [{"A":15, "B":14, "C":13}, {"D":12, "E":11, "F":10}]
procs = []
T = Test_Klasse()
##### Achtung, Quellcode funktioniert nicht #######
for t_dict in test_Dict_liste:
proc = Process(target=T.gen_diff, args=(t_dict,))
procs.append(proc)
proc.start()
for proc in procs:
proc.join()
###################################################
print "Juhu!"
Grüße Martin