Совместное использование массивов numpy, созданных дочерними процессами?Python

Программы на Python
Ответить
Anonymous
 Совместное использование массивов numpy, созданных дочерними процессами?

Сообщение Anonymous »

В Python я создаю большое количество дочерних процессов из родительского процесса. Каждый получает имя файла. Внутри дочернего процесса я использую numpy loadtxt для загрузки файла в массив numpy. Затем я хотел бы поделиться этим массивом с основным процессом без копирования, когда основной процесс получает массив от дочернего процесса. Важно сохранять массив numpy в форме, полученной из loadtxt, так как он большой и предназначен для записи в файл HDF5 (что будет выполнено из родительского процесса).
Есть ли Можно ли использовать общую память внутри дочерних процессов и предоставить к ней доступ основному процессу? Я сталкиваюсь с множеством запутанных проблем, связанных как с утечками памяти, так и с общей памятью, которую, как мне казалось, я создал, но не нашли.
Вот (нефункциональный) пример одного из способов, которым я могу воспользоваться. Я пытался написать рабочую функцию, запускаемую дочерними процессами. Идея (я ожидаю, что это не лучший способ) заключалась в том, чтобы отправить имя, форму и тип объекта общей памяти в основную функцию, а затем подождать, пока основная функция не отправит обратно сообщение о том, что она завершила работу с опцией общей памяти, поэтому дочерний процесс может отключить его.

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

def loadtxt(out_queue, in_queue, pathstring):
name = Path(pathstring).name
dtype = [('chr', 'S10'), ('pos', '

Подробнее здесь: [url]https://stackoverflow.com/questions/79232388/sharing-numpy-arrays-created-by-child-processes[/url]
Ответить

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

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

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

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

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