Можно ли использовать Ironpython для параллельного запуска нескольких экземпляров виртуальной машины Python? - PullRequest
2 голосов
/ 13 июля 2010

Вдохновленный игрой GunTactyx , где вы пишете программы, управляющие боевыми роботами. Гунтактик использовал Малый язык, который позже называется Пешка.

Я изучаю использование Python в качестве языка сценариев.

Мои опасения:

  1. Взаимодействие с C # Скрипты должен взаимодействовать с C # через простые функции, делать такие вещи, как сканирование на наличие врагов, вращение и обжиг. Я думаю, что каждая функция должна задерживаться, поэтому они будут принимать х мс вернуться.

  2. Плохие программы. Система должна быть терпимым к бесконечным циклам или сбои. Я хотел бы каждый виртуальный машина будет дана X отметок выполнить за раз.

  3. Скрипты с ограниченным использованием памяти не должно быть разрешено использовать неограниченное использование. Я хотел бы немного вид крышки.

  4. Вероятно, много других проблем

Я бы хотел закончить что-нибудь в этом "псевдо" стиле.

robots = a list of robots

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

1 Ответ

1 голос
/ 13 июля 2010

Ответ на ваш предметный вопрос да , вы можете запустить несколько переводчиков параллельно. Как правило, каждый сценарий будет выполняться в своем собственном ScriptScope, но вы также можете использовать изолированные ScriptEngine s при необходимости.

  1. Вы можете внедрить переменные / функции в область действия скрипта, прежде чем запускать его, используя scope.SetVariable.

  2. Лучше всего запустить код Python в отдельном потоке и посмотреть его; если для возврата потребуется слишком много времени, прервите поток. (это сложно понять, но это другой вопрос)

  3. Я не уверен, что можно легко исполнить. Это может быть возможно, если вы запускаете сценарии в другом домене приложения или процессе, но это требует много дополнительной работы для минимального выигрыша.

  4. Просто спросите!

...