Статья от Питание Двух Игр Игры Из уже было упомянуто в другом ответе, но я предлагаю читать все (или почти все) там, поскольку они все действительно правильно написаны и применяются непосредственно к игровой разработке. статья об Утверждает , особенно хорошо. Можно также посетить их предыдущий веб-сайт в Игры Из , который много записал [приблизительно 113] Разработку через тестирование , который является поблочным тестированием, взятым до крайности.
Питание Двух парней - те, кто реализовал UnitCpp, вполне прилично расцененную платформу поблочного тестирования. Лично, я предпочитаю WinUnit.
Вики PythonInfo предлагает решение этой проблемы.
FAQ: Как копировать байты в Python из ctypes.Structure?
def send (self): буфер возврата (сам) [:]
FAQ: Как скопировать байты в ctypes.Structure из Python?
def receiveSome (self, bytes): fit = min (длина (байты), ctypes.sizeof (себя)) ctypes.memmove (ctypes.addressof (self), bytes, fit)
Их send
является (более или менее) эквивалентом pack
, а receiveSome
является своего рода pack_into
. Если у вас есть «безопасная» ситуация, когда вы распаковываете структуру того же типа, что и исходная, вы можете однострочно, например memmove (addressof (y), buffer (x) [:], sizeof (y))
, чтобы скопировать x
в y
. Конечно, у вас, вероятно, будет переменная в качестве второго аргумента, а не буквальная упаковка x
.
Посмотрите на эту ссылку на бинарный i/o в питоне:
http://www.dabeaz.com/blog/2009/08/python-binary-io-handling.html
Исходя из этого вы можете просто написать следующее для чтения из буфера (а не только из файлов):
g = open("foo","rb")
q = Example()
g.readinto(q)
Записать просто:
g.write(q)
То же самое для использования сокетов:
s.send(q)
и
s.recv_info(q)
я провел некоторые тесты с pack/unpack и ctypes, и этот подход является самым быстрым, за исключением записи прямо на C
.