Итак, во-первых. Вот мой серверный движок. gilmud.py !
Хорошо, вот сокращенная версия моего предыдущего поста размером с роман.
Ссылка выше — это наш серверный движок Python для нашего MUD. Отмечая строки 73 -75 и 359 на
self.tickThread = threading.Thread(None, self.runTicks, None, ())
self.tickThread.start()
...
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 мобов / NPC «жизнь». Галочка ()проверяет такие вещи, как то, будут ли они двигаться или брать предметы, находятся ли они в бою или становятся целью и т. д. То же самое касается игроков, за исключением нескольких автоматических вещей, конечно.
Можем ли мы каким-либо образом переписать часть или весь этот модуль, скажем, на C++, чтобы повысить производительность? В настоящее время наши необходимые 0,1-секундные тики составляют около 3 секунд с использованием python в методе, который у нас есть сейчас.
(Кроме того, мы пробовали НЕСКОЛЬКО различных типов потоков и без стеков. Ничего не помогло ).
Заранее спасибо за помощь! Любые советы приветствуются!