Ich habe eine "Skript-Klasse" in IronPython und Scripting in meiner App funktioniert durch den Aufruf von Methoden auf seiner Instanz. Ich muss aufrufende Skripte von mehreren Threads implementieren. Was ist der richtige Weg?Multi-threading in IronPython
Ich habe mehrere Probleme auf:
Ist
ScriptScope
Thread-sicher? Information ist widersprüchlich. ScriptScope's documentation says: "ScriptScope ist nicht threadsicher. Host sollte entweder sperren, wenn mehrere Threads auf dasselbe Modul zugreifen können, oder eine Kopie für jeden Thread erstellen." IronRuby verwendet jedoch dieselbe DLR und @JimmySchementi says, die "ScriptRuntime, ScriptEngine und ScriptScope sind alle threadsicher, für die Verwendung zwischen Threads entwickelt. Insbesondere verwendet ScriptScope einen Thread-sicheren Datenspeicher, so dass ScriptScope zwischen Threads geteilt werden kann . "Wenn ich mehrere
ScriptScope
s erstelle, würde das bedeuten, dasselbe Initialisierungsskript mehrmals auszuführen. Angenommen, ich führe zehn Python-Skriptdateien aus, importiere fünf Assemblies und führe insgesamt ziemlich viel Code aus, um das "Skriptobjekt" bereit zu machen. Gibt es eine Möglichkeit, die Zeit und die Speicherkosten zu vermeiden, indem Sie für jeden einzelnen Thread denselben Code ausführen?machen die variable
ScriptScope
gewinde statisch (das heißt, die AnwendungThreadStaticAttribute
) und Ausführen der Initialisierung für jeden Faden, der durchTask.Run
den Weg zu gehen genutzt wird? Oder sollte ich eineTaskScheduler
mit einer Grenze für Parallelität verwenden, weil die Kosten für mehrere Bereiche hoch ist?
Im Großen und Ganzen: , wie man richtig implementieren auf unterschiedliche Argumente in mehreren Threads das gleiche Skript ausgeführt wird? Skripte müssen gleichzeitig ausgeführt werden und dürfen aufgrund von Rennbedingungen nicht abstürzen.
Ich fühle für dich. Ich fand die Dokumentation über Ironpython und Ironruby in jeder Hinsicht mangelhaft, da Microsoft aufhörte, sie offiziell zu unterstützen. –