Message283188
In an attempt of using ctypes.from_buffer() to map a structure to a memory mapped file, it is important to destroy the mapping after use, because the mmap won't be resizable or freeable correctly until then.
The best approach, I was able to came up with is using a context manager, but calling the dtor of the mapping in __exit__ is not enough, which results to code like this:
with StructMap(ctypes_struct, mm, offest) as smap:
smap.xxx = 'blabla'
del smap # necessary, but ugly
Without the del, the "with" variable still exist in the local context, hence the mapping still exist, until it is explicitly destroyed.
I hope, that ctypes is able to (or can be made to) actively remove the mapping in the __exit__ part of the context manager.
I've put some code on stackoverflow to play with this:
http://stackoverflow.com/questions/41077696/python-ctypes-from-buffer-mapping-with-context-manager-into-memory-mapped-file
The problem seems to exist with the linux mmap implementation only. |
|
Date |
User |
Action |
Args |
2016-12-14 11:36:48 | frispete | set | recipients:
+ frispete |
2016-12-14 11:36:48 | frispete | set | messageid: <1481715408.44.0.569114702165.issue28970@psf.upfronthosting.co.za> |
2016-12-14 11:36:48 | frispete | link | issue28970 messages |
2016-12-14 11:36:47 | frispete | create | |
|