所以,首先。這是我的服務器引擎。 gilmud.py!好吧,這是我以前的小說大小的文章的縮短版本。Python太慢了 - 我可以在低級別和cp腳本中重寫引擎嗎?
上面的鏈接是我們的MUD的python服務器引擎。注意到在
self.tickThread = threading.Thread(None, self.runTicks, None,())
self.tickThread.start()
線73-75,和359 ...
def runTicks(self):
while self.running:
time.sleep(.1)
for thing in Thing.List.values():
if thing:
if "person" in thing.attrs:
if "spawner" in thing.attrs:
thing.tick()
,你可能會看到給我們所需要的大致100位的選手和2000小怪/籌備了可怕的方法「生活'。 tick()檢查是否會移動或拾取物品,或者如果它們處於戰鬥中或被定位等等。當然,對於玩家來說也是如此,減去一些自動化的東西。
有沒有什麼辦法可以重寫一部分,或者說所有這個模塊,比如C++來獲得更好的性能?目前我們需要的.1秒鐘的滴答時間是在我們現在使用的方法中使用python大約3秒。 (另外,我們已經嘗試了幾種不同的線程類型和堆棧,沒有任何技巧)。
在此先感謝您的幫助!歡迎任何建議!
這真的很健談..你能把它與一些具體問題縮短閱讀嗎? – Levon 2012-07-17 20:41:29
什麼類型是thing.attrs? – casevh 2012-07-17 21:55:29
如果你的東西把他們想做的事情添加到數組中而不是輪詢它們,那會更好。 (即提升事件)。那麼你就不必經歷所有的事情,只有從上次執行以來收到的所有事件的列表。 – Qiau 2012-07-17 22:49:19