Ironpython能否并行运行多个Python虚拟机实例?
这个想法是受到一个游戏的启发,叫做GunTactyx,在这个游戏里,你可以编写程序来控制战斗机器人。GunTactyx使用了一种叫Small的语言,后来这个语言被称为Pawn。
我想用Python作为脚本语言。
我有几个担心的地方:
与C#的连接。脚本需要通过简单的函数与C#进行连接,执行一些操作,比如扫描敌人、旋转和开火。我想每个函数的执行应该有延迟,也就是说,它们需要花费x毫秒才能返回结果。
糟糕的程序。系统应该能够容忍无限循环或崩溃的情况。我希望每个虚拟机在执行时能被分配X个时间片。
内存使用限制。脚本不应该被允许无限制地使用内存。我希望能有某种限制。
可能还有很多其他问题。
我希望最终能得到一种“伪”风格的东西。
robots = a list of robots
while(1)
foreach robot in robots
robot.tick()
gameworld.update()
1 个回答
1
关于你提问的主题,答案是可以,你可以同时运行多个解释器。一般来说,每个脚本会在自己的ScriptScope
中运行,但如果需要的话,你也可以使用独立的ScriptEngine
。
在运行脚本之前,你可以通过
scope.SetVariable
把变量或函数注入到脚本的作用域中。最好的办法是把Python代码放在一个单独的线程中运行,并观察它;如果返回的时间太长,就中断这个线程。(这有点难搞定,但这是另一个问题)
我不确定这是否容易实现。如果你在不同的AppDomain或进程中运行脚本,可能可以做到,但这会增加很多额外的工作,而收益却很小。
有问题就问吧!