[ TAG 280 ][26.12.2021] -Erfolgreich
Ich beginne mit meiner Worksession [27012022][2055].
Es geht weiterhin um die RPRCSL-Liste. Der einzelne Zugriff ist immer mit einen sehr großen Rechenaufwand verbunden. Meine ersten Zeitmessungen zeigten bei einen leeren Prozess fast zwei Sekunden Bearbeitungszeit. Das bedeutet, dass innerhalb dieses Zeitintervalls ein Prozess gestartet wurde mit der Aufgabe in die RPRCSL-Liste STATES rein zu schreiben.
Um die Zugriffe auf die RPRCSL zu reduzieren, bin ich auf die Idee gekommen die UPDATE_ITEM()-Methode zu verwenden.
def UPDATE_ITEM(RPRCSL=None,
pid=None,
STATE_00=None,
STATE_10=None,
STATE_19=None,
STATE_20=None,
LOGGER_00=None,
ALOG=None
):
if RPRCSL is None:
print(f"Fehler -> UPDATE_ITEM(...) benötigt eine Referenz auf RPRCSL")
return False
if pid is None:
print(f"Fehler -> UPDATE_ITEM(...) benötigt eine pid")
return False
rprcsl = dict()
if STATE_00 is not None:
rprcsl.update(STATE_00)
else:
rprcsl.update(STATE_00_ITEM_COPY(RPRCSL=RPRCSL, pid=pid, update=True))
if STATE_10 is not None:
rprcsl.update(STATE_10)
else:
rprcsl.update(STATE_10_ITEM_COPY(RPRCSL=RPRCSL, pid=pid, update=True))
if STATE_19 is not None:
rprcsl.update(STATE_19)
else:
rprcsl.update(STATE_19_ITEM_COPY(RPRCSL=RPRCSL, pid=pid, update=True))
if STATE_20 is not None:
rprcsl.update(STATE_20)
else:
rprcsl.update(STATE_20_ITEM_COPY(RPRCSL=RPRCSL, pid=pid, update=True))
if LOGGER_00 is not None:
rprcsl.update(LOGGER_00)
else:
rprcsl.update(LOGGER_00_ITEM_COPY(RPRCSL=RPRCSL, pid=pid, update=True))
if ALOG is not None:
rprcsl.update(ALOG)
else:
rprcsl.update(ALOG_ITEM_COPY(RPRCSL=RPRCSL, pid=pid, update=True))
RPRCSL[pid] = rprcsl
Ich werde die Situationen haben, wo ich zum Beispiel eine leere RPRCSL-Liste habe und weil die Methoden so konstruiert worden sind, dass wenn ein ITEM = None ist, also wenn ein ITEM nicht übergeben wurde, dann muss der Wert aus der RPRCSL-Liste kopiert werden.
Wenn ich jedoch weiß, welche ITEMs None sind, kann ich mir den Zugriff auf die RPRCSL-Liste ersparen.
Wenn ich also weiß, welche ITEMs None sind bin ich in der Lage leere ITEMS zu generieren. Ich vermeide die COPY-Methoden und der einzige Zugriff auf die RPRCSL-Liste befindet sich in der letzten Zeile.
- RPRCSL[pid] = rprcsl
Um leere ITEMs zu generieren benutze ich die ITEM_EMPTY()-Methoden.
Kommentare
Kommentar veröffentlichen