У меня есть следующее:
from struct import pack_into
from mmap import mmap
from multiprocessing import Pool
mem_label = "packed_ints"
total = 5 * 10**7
def create_mmap(size = total):
''' Seems only the Windows version of mmap accepts labels '''
is_this_pickled = mmap(-1, total * 4, mem_label)
def pack_into_mmap(idx_nums_tup):
idx, ints_to_pack = idx_nums_tup
pack_into(str(len(ints_to_pack)) + 'i', mmap(-1, total * 4, mem_label) , idx*4*total//2 , *ints_to_pack)
if __name__ == '__main__':
create_mmap()
ints_to_pack = range(total)
pool = Pool()
pool.map(pack_into_mmap, enumerate((ints_to_pack[:total//2], ints_to_pack[total//2:])))
Я «спрятал» исходный mmap внутри функции, но я хотел бы знать наверняка, что происходит при травлении.
Могу ли я отслеживать / использовать эту информацию в Python?