擅长:python、mysql、java
<p><a href="http://docs.python.org/library/sys.html" rel="nofollow">^{<cd1>}</a>模块提供了<code>getsizeof()</code>函数,该函数以字节为单位返回对象的大小(使用objects<code>__sizeof__</code>方法)。如果使用自定义对象,则需要仔细测试<code>__sizeof__</code>实现,但听起来这对于标准类型应该可以正常工作。在</p>
<p>或者,也可以将数据序列化为<code>pickle</code>或<code>json</code>,并计算字符串中的字符数,尽管这可能会导致性能损失。在</p>
<p>使用这两种方法,如果要传输可变长度的数据,首先传输大小,然后使用该值确定要读取多少数据。在</p>
<h3>其他注意事项:</h3>
<ul>
<li>如果还没有,还需要阅读<a href="http://docs.python.org/library/socket.html" rel="nofollow">sockets</a>的api文档。在</li>
<li>请注意,复合类型(如列表)需要额外的空间,因此:</li>
</ul>
<pre>
>>> import sys
>>> a = [1,3,4]
>>> sys.getsizeof(a)
96
>>> l = 0
>>> for i in a:
... l += sys.getsizeof(i)
...
>>> print l
72
>>>
</pre>