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