Ironpython能否并行运行多个Python虚拟机实例?

2 投票
1 回答
591 浏览
提问于 2025-04-16 01:13

这个想法是受到一个游戏的启发,叫做GunTactyx,在这个游戏里,你可以编写程序来控制战斗机器人。GunTactyx使用了一种叫Small的语言,后来这个语言被称为Pawn。

我想用Python作为脚本语言。

我有几个担心的地方:

  1. 与C#的连接。脚本需要通过简单的函数与C#进行连接,执行一些操作,比如扫描敌人、旋转和开火。我想每个函数的执行应该有延迟,也就是说,它们需要花费x毫秒才能返回结果。

  2. 糟糕的程序。系统应该能够容忍无限循环或崩溃的情况。我希望每个虚拟机在执行时能被分配X个时间片。

  3. 内存使用限制。脚本不应该被允许无限制地使用内存。我希望能有某种限制。

  4. 可能还有很多其他问题。

我希望最终能得到一种“伪”风格的东西。

robots = a list of robots

while(1)
   foreach robot in robots
      robot.tick()
   gameworld.update()

1 个回答

1

关于你提问的主题,答案是可以,你可以同时运行多个解释器。一般来说,每个脚本会在自己的ScriptScope中运行,但如果需要的话,你也可以使用独立的ScriptEngine

  1. 在运行脚本之前,你可以通过scope.SetVariable把变量或函数注入到脚本的作用域中。

  2. 最好的办法是把Python代码放在一个单独的线程中运行,并观察它;如果返回的时间太长,就中断这个线程。(这有点难搞定,但这是另一个问题)

  3. 我不确定这是否容易实现。如果你在不同的AppDomain或进程中运行脚本,可能可以做到,但这会增加很多额外的工作,而收益却很小。

  4. 有问题就问吧!

撰写回答