Python,ctypes和mmap

Fre*_*den 10 python ctypes

我想知道ctypes包是否可以与mmap连接.

目前,我的模块分配一个缓冲区(with create_string_buffer),然后将其传递byref给我的库mylib.read函数.顾名思义,这将数据读入缓冲区.然后我调用file.write(buf.raw)将数据写入磁盘.然而,我的基准测试表明,这远远不是最佳状态(花费的file.write时间更好地花费在时间上mylib.read).

因此,我有兴趣知道ctypes是否可以与mmap互操作.给定一个mmap.mmap实例和一个偏移量我怎样才能将指针(c_void_p)带入地址空间?

Ale*_*lli 12

一个mmap对象"支持可写缓冲区接口",因此您可以使用from_buffer类方法,所有ctypes类都以mmap实例作为参数,创建一个ctypes就像您想要的对象,即共享内存(以及底层)文件)mmap实例已映射.我想,具体来说,你会想要一个合适的ctypes 阵列.

  • 一个很好的例子:https://github.com/serdardalgic/Code_Snippets/blob/master/Python-Examples/mmap/shared_memory_write.py (2认同)