Logan Gunthorpe <[email protected]> added the comment:
Paul's solution works in 3.7 if you set the buffer size to zero when calling
fdopen.
fd = os.open("my_file", os.O_DIRECT | os.O_RDWR)
f = os.fdopen(fd, "rb+", 0)
m = mmap.mmap(-1, 4096)
f.readinto(m)
This is according to a comment in _pyio.py:
# If remaining space in callers buffer is larger than
# internal buffer, read directly into callers buffer
So by simply disabling the buffer (which is what we'd want for O_DIRECT anyway)
readinto() works as expected.
However, based on this issue, I'm a little concerned this won't be fully
supported by python going forward; so use with care.
----------
nosy: +logang
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue5396>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com