[IronPython] Statefulness of CompiledCode
Korbinian Abenthum
lists.ironpython.com at ka.weltenschmiede.com
Mon May 26 19:43:58 CEST 2008
Greg Parker wrote:
> for (int i = 0; i < 10; i++) {
> compiledScript.Execute();
> }
AFAIK the import statement creates a new Scope for the imported module
that lives in parallel to the ScriptScope passed to Execute (in IP2, I
don't know about 1.1). Since import will check if the module was
imported before, it is only imported during the first iteration and
the class variable of SomeClass will persist during all you calls to
Execute.
It should work to "import SomeInclude; reload(SomeInclude)" at the
beginning or end of each execution. On the C# side, if I add
python.Runtime.Globals.ClearVariables();
before or after each call to execute, it removes the (references to
the) imported scopes and will load them anew during the next execution,
but I do not know if this is the cleanest way to do so.
| ScriptEngine python = IronPython.Hosting.PythonEngine.CurrentEngine;
| CompiledCode compiledCode = python.CreateScriptSourceFromFile("Program.py").Compile();
| ScriptScope scope = python.CreateScope();
|
| for (int i = 0; i < 10; i++)
| {
| compiledCode.Execute(scope);
| python.Runtime.Globals.ClearVariables();
| }
More information about the Ironpython-users
mailing list