2011-07-04 28 views
10

Me gustaría usar el módulo python'smultiprocessing para utilizar un servidor Linux multi-core.Python: ¿compartir una matriz numerada entre procesos?

Necesito todos los procesos que tienen acceso de lectura/escritura a la misma memoria compartida.

En lugar de utilizar list o queue, ¿es posible tener una matriz multidimensional numpy como objeto compartido?

Respuesta

6

Mira this. No parece fácil, pero es factible.

+0

gracias. parece un buen comienzo. – user3262424

8

creo que sé lo que estás buscando: https://bitbucket.org/cleemesser/numpy-sharedmem/issue/3/casting-complex-ndarray-to-float-in

Hay una breve descripción en la página web de dicho: Un módulo de memoria compartida para numpy por Sturla Molden y G. Varoquaux que hace que sea fácil de compartir la memoria entre procesos en forma de matrices NumPy. Originalmente publicado en la lista de correo de usuarios de SciPy.

Yo mismo lo estoy usando así. Compartir matrices NumPy entre procesos. Funciona muy bien para mi

0

Encontré que incluso si no modifica su matriz numpy después de tenedor() 'un montón de procesos hijo, aún verá su RAM dispararse como childprocesses copiar-en-escribir el objeto por alguna razón.

Puede limitar (o totalmente aliviar?) Este problema estableciendo

"yourArray.flags.writeable = False" 

ANTES tenedor() 'ing/piscina()' ing, que parece mantener la memoria RAM utilizada abajo, y es mucho menos molestia que los otros métodos :)

Cuestiones relacionadas