trotz der zigtausenden Programmierbeispiele zu threading im World-Wide-Web habe ich immer noch ziemliche startschwierigkeiten damit.
Ganz simple Funktionen zu threaden stellt ja kein Problem dar. Allerdings bin ich nun dabei das ganze über die Objektorientierte ebene anzugehen. Und da klennt es wohl ein "wenig".
Also ich will eine cPickle Datenbank (mit großer Datenmenge) möglichst laggfrei über cPickle laden und speichern können.
Dazu habe ich mir gedacht erstelle ich mir folgende 3 Klassen:
Hier die erste Klasse, mit der ich die Datenbank über einen Thread laden kann:
Code: Alles auswählen
class DBLoader(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
self.db_data = cPickle.load("pfad zur datenbank und so... tut dem thema nichts zur sache^^")
Code: Alles auswählen
class DBSaver(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run(self):
with open(dbpath, 'wb') as f:
cPickle.dump(data, f)
Code: Alles auswählen
class DBManager:
def __init__(self):
self.l = threading.Lock()
def saveDB(self):
with self.l:
saver = DBSaver()
saver.start()
def loadDB(self):
with self.l:
loader = DBLoader()
loader.start()
Macht die sache so wie ich es mir gedacht hat überhaupt einen Sinn und wenn ja: Gäbe es eventuell eine bessere Variante das zu lösen?
Meine nächste Frage wäre, wie ich denn nun genau auf die Daten des Ladenden Threads zugreife (nachdem das laden vollständig abgeschlossen ist)?
Hoffe ihr könnt mir das große Fragezeichen ein wenig in ein Ausrufezeichen "verwandeln"^^
MfG
Stefan