Ich habe ein Projekt mit verschiedenen Hauptdateien (für verschiedene Simulationen). Wenn ich eine der Hauptdateien ausführe, sollte es einen Zufallswert (und numpy.random) setzen, und alle Module im Projekt sollten diesen Samen verwenden.Gibt es eine gute Möglichkeit, den Samen der zufälligen zwischen Modulen (in Python) zu teilen?
Ich finde keinen guten Weg, dies zu tun. Ich habe eine Datei globals.py mit diesem:
import random
myRandom=None
def initSeed(seed):
global myRandom
myRandom =random.Random(seed)
dann von einem Haupt ich tun:
if __name__ == "__main__":
seed=10
globals.initSeed(seed)
...
Dann in den Modulen, die Haupt Anrufe, ich mache:
from globals import myRandom
Aber myRandom hat den Wert None im Modul (obwohl ich es in main geändert habe!). Warum und wie man es repariert? Gibt es einen schöneren Weg?
Wenn Sie wollen, es zu tun, indem 'global' verwenden, sollte die Variable' global' in allen Funktionen deklariert werden, die es verwenden. Sie könnten Klassen und Unterklassen verwenden, aber Sie könnten auch den Wert in eine Datei schreiben. Ich denke, Sie würden in Ihrem aktuellen Setup auf die Variable "myRandom" über "globals.myRandom" zugreifen. Übrigens. 'globals' ist bereits in Python definiert, also ändere den Dateinamen in etwas anderes (nicht' glob' - auch übernommen) – jDo
'sollte es einen Zufallswert setzen und alle Module im Projekt sollten diesen Seed verwenden. Sound wie du bist Suchen nach Singletons? – Cyrbil
Ich frage mich nur, was ist Ihr Anwendungsfall – yedpodtrzitko