私が書いたコードは正常に機能するようになり、逆シリアル化されたオブジェクトを間違いなく印刷できるので、そこに何が含まれているかを正確に把握できます。
@staticmethod
def receiveData(self):
'''
This method has to be static, as it is the argument of a Thread.
It receives Wrapperobjects from the server (as yet containing only a player)
and resets the local positions accordingly
'''
logging.getLogger(__name__).info("Serverinformationen werden nun empfangen")
from modules.logic import game
sock = self.sock
time.sleep(10)
self.myPlayer = game.get_player()
while (True):
try:
wrapPacked = sock.recv(4096)
self.myList = cPickle.loads(wrapPacked)
# self.setData(self.myList)
except Exception as eload:
print eload
ただし、ここのコメントにある行(self.setData(self.myList))を実際に使用しようとすると、
私は得る
unpickling stack underflow
と
invalid load key, ' '.
念のため、setDataのコードは次のとおりです。
def setData(self, list):
if (list.__sizeof__()>0):
first = list [0]
self.myPlayer.setPos(first[1])
self.myPlayer.setVelocity(first[2])
私はこれを3日間続けていますが、実際、何が悪いのかわかりません。手伝って頂けますか?完全なトレースバック:
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
File "mypath/client.py", line 129, in receiveData
self.myList = cPickle.loads(wrapPacked)
UnpicklingError: unpickling stack underflow –