2011-07-04 5 views
10

Je voudrais utiliser le module python'smultiprocessing pour utiliser un serveur Linux multicœur.Python - Partager un tableau Numpy entre processus?

J'ai besoin que tous les processus aient un accès en lecture/écriture à la même mémoire partagée. Au lieu d'utiliser un list ou un queue, est-il possible d'avoir un tableau multidimensionnel numpy en tant qu'objet partagé? Au lieu d'utiliser un tableau ?

Répondre

6

Regardez this. Je ne semble pas facile, mais c'est faisable.

+0

merci. On dirait un bon début. – user3262424

8

Je pense que je sais ce que vous cherchez: https://bitbucket.org/cleemesser/numpy-sharedmem/issue/3/casting-complex-ndarray-to-float-in

Il y a une brève description sur la page Web dit: Un module de mémoire partagée pour numpy par Sturla Molden et G. Varoquaux qui le rend facile de partager la mémoire entre les processus sous la forme de tableaux NumPy. Publié à l'origine sur la liste de diffusion SciPy-user.

Moi, je l'utilise comme ça. Partage des tableaux NumPy entre les processus. Fonctionne très bien pour moi.

0

J'ai trouvé que même si vous ne modifiez pas votre tableau numérique après fork() un tas de processus fils, vous verrez votre RAM monter en flèche alors que childprocesses copier-sur-écrire l'objet pour une raison quelconque.

Vous pouvez limiter (ou totalement atténuer?) Ce problème en définissant

"yourArray.flags.writeable = False" 

AVANT fork() « ING/Pool() » ING qui semble garder la mémoire vive utilisée vers le bas, et est beaucoup moins tracas que les autres méthodes :)

Questions connexes