您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python如何获取iobytes分配的内存长度?

python如何获取iobytes分配的内存长度?

我不确定分配的缓冲区/内存长度是什么意思,但是如果您希望存储在BytesIO对象中的用户数据长度可以执行

>>> bio = io.BytesIO()
>>> bio.getbuffer().nbytes
0
>>> bio.write(b'here is some data')
17
>>> bio.getbuffer().nbytes
17

但这似乎等同于len(buf.getvalue())您当前正在使用的。

BytesIO对象的实际大小可以使用sys.getsizeof()以下方法找到:

>>> bio = io.BytesIO()
>>> sys.getsizeof(bio)
104

或者,您可能会很讨厌并__sizeof__()直接调用(这就像sys.getsizeof()但没有适用于该对象的垃圾收集器开销):

>>> bio = io.BytesIO()
>>> bio.__sizeof__()
72

的内存BytesIO是根据需要分配的,并且会发生一些缓冲:

>>> bio = io.BytesIO()
>>> for i in range(20):
...     _=bio.write(b'a')
...     print(bio.getbuffer().nbytes, sys.getsizeof(bio), bio.__sizeof__())
...
1 106 74
2 106 74
3 108 76
4 108 76
5 110 78
6 110 78
7 112 80
8 112 80
9 120 88
10 120 88
11 120 88
12 120 88
13 120 88
14 120 88
15 120 88
16 120 88
17 129 97
18 129 97
19 129 97
20 129 97
python 2022/1/1 18:39:35 有268人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶