ctypes 库里的 create_string_buffer 缓冲区能被截断吗?

2017-11-06 19:32:11 +08:00
 linxy19957
问题是这样的,我调用 create_string_buffer 创建了一个 100mb 大小的缓冲区,然后调用了某个 dll 的函数修改了这个 buffer,dll 给我返回了修改的长度。
我想调用 socket 的 sendall 函数把被修改的那部分发送出去,sendall(buf[:len])可以满足我的需求,但是 python 内部似乎是另外创建了一个字符串对象然后进行了拷贝,在数据量大的时候 cpu 占用有点高。
请问有没有办法能对 buffer 进行一个截断,在实际不影响 buffer 大小的情况下,让 sendall 函数只发送部分数据呢?
2966 次点击
所在节点    Python
2 条回复
justou
2017-11-06 19:46:28 +08:00
试试 memoryview
NoAnyLove
2017-11-06 23:19:26 +08:00
Python 中使用 slice 都会创建一个新的拷贝,memory slice 不会创建底层映射的拷贝

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/404056

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX