Я сейчас разрабатываю игру. Большая часть игрового процесса написана на python, а код, чувствительный ко времени, написан на C ++. Boost python 1.55 — это мост.
Я пытаюсь сериализовать (рассолить) класс IA, чтобы отправить их в сеть.
def update(self, elapsedTime):
core.pushCommand("update_ia", pickle.dumps(self), self.manager)
В целях тестирования эта функция называется каждым кадром, то есть примерно 60 раз в секунду.
И моя игра съедает 100 мегабайт памяти каждые несколько секунд и быстро выходит из-за истощения памяти.
Я пытался использовать другую версию этого кода, но закончил с той же проблемой:
def update(self, elapsedTime):
iostr = StringIO()
p = pickle.Pickler(iostr)
p.dump(self)
core.pushCommand("update_ia", iostr.getvalue(), self.manager)
iostr.close()
p.clear_memo()
Я также попытался использовать собственный модуль pickle вместо cPickle, но безрезультатно.
Задача ещё не решена.
Других решений пока нет …