Имам голям глобален преглед на обща стойност 30GBsданни в програма, изпълнявана чрез qsub на клъстер с 256 GB RAM. В момента съм единственият потребител в този клъстер, така че няма конфликти с разпределението на RAM. Когато се прекъсва тази пренастройка, системата изглежда като шунтира обекта към диска, не я държи в RAM, като по този начин забавя цикъла над 5 пъти. Аз бях гледам в използването на mmap на обекта по следните начини и получих следните грешки.
m = mmap.mmap(myrecarray, 0)
MMAP TypeError: only length-1 arrays can be converted to Python scalars
m = mmap.mmap(myrecarray.fileno(), 0)
AttributeError: record array has no attribute fileno
възможно ли е да се използва mmap
да задържи a recarray
обект в RAM, или това е пълна злоупотреба с метода mmap или това може да се направи само за други видове обекти, като низове или файлове?
много благодаря
Отговори:
2 за отговор № 1Вместо mmap
може да искате да използвате numpy.memmap
или numpy.load
да отворите файла с данни.
Или проверете отговори на „използване на numpy.memmap за картографиране на файл с устройство“ за алтернативен подход.
0 за отговор № 2
На този въпрос е отговорено тук ...
http://www.biostars.org/p/92704/#92764
по същество това е пълна злоупотреба с метода mmap. Тя изглежда полезна само за файлове или низове, а не за всяка сложна структура от данни.