gpt4 book ai didi

python - 有没有办法在设置大小参数时使 buffer() 可写而不进行复制?

转载 作者:太空宇宙 更新时间:2023-11-04 05:22:48 25 4
gpt4 key购买 nike

如果对象是可变的,则可以通过不指定 buffer() (这是一个内置函数)的第二个参数来获取可修改的缓冲区,如下所示:

>>> s = bytearray(1000000)   # a million zeroed bytes
>>> t = buffer(s, 1) # slice cuts off the first byte
>>> s[1] = 5 # set the second element in s
>>> t[0] # which is now also the first element in t!
'\x05'

但是,就我而言,我需要指定0x7fffffff作为大小参数。在这种情况下:

>>> b = buffer(bytearray('a'), 1,0x7fffffff)

how to make b writeable without copying it’s data ?在我的例子中,_ctypes支持被禁用,并且程序不会以 root 身份启动。
当然,像内存 View 这样的东西是可用的,但我失去了在每个虚拟地址读取内存的可能性。

最佳答案

副本是必要的。 bytearray 的内部缓冲区根本不是 2 GiB 长;如果您想要 2 GiB 缓冲区,则需要将 bytearray 的数据复制到新缓冲区中。

如果您以某种方式强制 Python 将缓冲区视为您希望的大小而不进行复制,则写入它会损坏进程的内存和/或导致段错误。

关于python - 有没有办法在设置大小参数时使 buffer() 可写而不进行复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38647848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com