Часть кода, которая у меня есть, выглядит примерно так:
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 ()
.