2010-07-13 28 views
2

靈感來自於遊戲GunTactyx,您在這裏編寫控制戰鬥機器人的程序。 Guntactyx使用小語言,後來被稱爲典當。可以使用Ironpython並行運行多個Python虛擬機實例嗎?

我正在研究使用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

回答你的主題問題是,您可以並行運行多個解釋。通常,每個腳本都將在其自己的ScriptScope中運行,但如果需要,您還可以使用分離的ScriptEngine

  1. 可以使用scope.SetVariable運行它之前注入的變量/函數到腳本的範圍。

  2. 最好的辦法是在單獨的線程上運行Python代碼並觀察它;如果返回時間太長,請中斷該線程。 (這是棘手的,但得到正確的,但這是一個不同的問題)

  3. 我不知道,可以輕鬆地強制執行。如果您在不同的AppDomain或進程中運行腳本,可能會有這種可能性,但這樣做可能會帶來很多額外的工作以獲得最小的收益。

  4. 請問!

+0

每個虛擬機具有相同數量的計算週期是至關重要的。你認爲有辦法讓它以受控的方式運行嗎? – TAXfromDK 2010-07-13 18:29:51

+0

相同數量的進程,可能不是,至少不在.NET上。你能做的最好的是給他們一個固定的時間窗口。 – 2010-07-13 22:08:57

相關問題