Копируются ли совместно используемые данные только для чтения в разные процессы для многопроцессорной обработки?

Часть кода, которая у меня есть, выглядит примерно так:

glbl_array = # a 3 Gb array

def my_func( args, def_param = glbl_array):
    #do stuff on args and def_param

if __name__ == '__main__':
  pool = Pool(processes=4)
  pool.map(my_func, range(1000))

Есть ли способ сделать убедитесь (или поощряйте), что разные процессы не получают копию glbl_array, а разделяют ее. Если нет возможности остановить копирование, я использую массив с memmapped, но мои шаблоны доступа не очень регулярны, поэтому я ожидаю, что массивы с memmapped будут медленнее. Вышесказанное казалось первым, что нужно попробовать. Это в Linux. Мне просто нужен совет от Stackoverflow, и я не хочу раздражать системного администратора. Как вы думаете, поможет ли вторым параметром подлинный неизменяемый объект, например glbl_array.tostring () .

50
задан martineau 11 August 2017 в 05:02
поделиться