Код: Выделить всё
#!/usr/bin/python
import os, sys, mmap
# Open a file
fd = os.open( "foo.txt", os.O_RDWR|os.O_CREAT)
s = ' ' * 1024
# Write one string
os.write(fd, s)
# Close opened file
os.close( fd )
OSError: [Errno 22] Неверный аргумент
Теперь, как предложено в этой статье: мне нужно использовать mmap для отображения части файла в память. Mmap работает с детализацией в одну страницу памяти — то есть 4кб. Таким образом, каждый буфер, отображаемый в памяти, естественным образом выравнивается по памяти до 4 КБ, то есть до границы 512 байт. Код с mmap:
Код: Выделить всё
#!/usr/bin/python
import os, sys, mmap
# Open a file
fd = os.open( "foo.txt", os.O_RDWR|os.O_CREAT|os.O_DIRECT)
m = mmap.mmap(-1, 1024)
s = ' ' * 1024
m.write(s)
# Write one string
os.write(fd, m)
# Close opened file
os.close( fd )
- В строке m = mmap.mmap(-1, 1024) я понимаю, что указание -1 является дескриптором файла, выделяющим оперативную память. Каково значение числа 1024?
- Что делает s = ' ' * 1024? Опять же, какое значение здесь имеет число 1024?
Подробнее здесь: https://stackoverflow.com/questions/636 ... h-o-direct
Мобильная версия