Размер общей памяти для массива numpyPython

Программы на Python
Ответить
Anonymous
 Размер общей памяти для массива numpy

Сообщение Anonymous »

В примере на superfastpython.com размер сегмента общей памяти, который будет использоваться для поддержки одномерного массива numpy, рассчитывается как количество элементов, умноженное на размер типа данных.
Мы знаем, что параметр размера, заданный конструктору SharedMemory, является минимальным. Таким образом, во многих случаях фактический размер может быть больше заданного — и это нормально.
Но что, если указанный размер точно кратен размеру базовой страницы памяти?
Но что, если указанный размер точно кратен размеру базовой страницы памяти?
p>
Подумайте об этом:

Код: Выделить всё

import numpy as np
from multiprocessing.shared_memory import SharedMemory

n = 2048
s = n * np.dtype(np.double).itemsize
shm = SharedMemory(create=True, size=s)
try:
assert s == shm.size
a = np.ndarray((n,), dtype=np.double, buffer=shm.buf)
a.fill(0.0)
finally:
shm.close()
shm.unlink()
В этом случае (Python 13.3.0 в macOS 15.0.1) значение s равно 16 384, что в точности кратно размеру базовой страницы. и поэтому shm.size равен s
Может быть, я недостаточно знаю о numpy, но я мог предположить, что ndarray потребуется больше места для внутренних / структуры управления.
Может кто-нибудь объяснить, почему это работает и почему нет очевидной необходимости выделять дополнительное пространство в сегменте общей памяти?

Подробнее здесь: https://stackoverflow.com/questions/790 ... umpy-array
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»