[英]Receive big list through TCP Sockets - Python
哪一種是通過TCP套接字接收大量列表的最佳方法?
我的代碼如下所示。 當您必須收到一個大清單時,這顯然不起作用。
print 'connection from', client_address
while True:
try:
data = pickle.loads(connection.recv(8192))
except EOFError:
print 'no more data from', client_address
break
最好的方法是將socket
轉換為file
對象。 您可以使用connection.makefile()
進行此操作。 然后,而不是調用pickle.loads()
(它期望包含完整的腌制對象的完整字節字符串pickle.loads()
,而是調用pickle.load(connection.makefile())
。 這樣,您可以讓pickle
模塊處理讀取整個“文件”的過程。 它將重復調用對象的read
函數,直到接收到所有期望的數據為止。
這基本上是假設流中的其余部分都不會被酸洗(這似乎是您要嘗試的方法,因此聽起來應該可以工作)。 否則,您可能需要將自己的偽文件對象包裝在對腌制對象的末尾有一定了解的流周圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.