存储昂贵的对象以在ASP.NET MVC中重用?

时间:2009-07-20 14:33:23

标签: asp.net-mvc ironpython

我正在尝试使用IronPython扩展我的一个WebApp,遗憾的是下面的代码运行得非常慢:

        var engine = Python.CreateEngine();
        SourceCodeKind st = SourceCodeKind.Statements;
        string source = "print 'Hello World'";
        var script = engine.CreateScriptSourceFromString(source, st);
        var scope = engine.CreateScope();
        script.Execute(scope);

我假设Python Engine的创建大部分时间都在使用,因为即使像Python这样的解释语言也应该运行得相对较快。

所以,假设我的假设是正确的;我可以将Python Engine存储在某处以节省每次创建它的费用吗?或者有更好的方法吗?

安东尼

1 个答案:

答案 0 :(得分:1)

如果对引擎的访问是线程安全的,您只需将其存储在某个静态实例变量中即可。

如果访问不是线程安全的,您应该同步对它的访问,可能池化实例以减少锁争用。