Bonjour, alors voila mon problème, je cherche désespérément un moyen de partager un objet entre 2 processus (avec le multi-processing).
Je ne trouve rien sur le net de très concluant, j'ai pu trouver 2-3 tentative de bidouilles sur stackoverflow, mais sa ne semble pas marcher.
Voici toute mes questions :
1) Es ce possible de faire cela en python ?
2) Si oui l'avez vous déja fait ?
3) si oui, pouvez vous me montrer comment ?
Pour le partage de variable en revanche j'arrive à partager des int, float, char et co avec c_types :
4) sa marche bien, mais c'est tres gourmand en mémoire, variablepartager me consomme 50mo de ram ! y'a t'il moyen de baisser sa consommation de manière plus raisonnable ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 variablepartager = Value('i', 0) variablepartager.value=10 #je change sa valeur à 10 proc = multiprocessing.Process(target=StartProgramme, args=(variablepartager,)) proc.start()
pour l'array voici mon code :
5) Grosse limitation la aussi, car on peut partager un array 1D, mais comment on fait si on a une matrice 2D ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 data=[[0,0],[1,1]] dataArray=Array(ctypes.c_int, [elt for row in data for elt in row], lock=False) def _initialize_subprocess(shared_array_base): test.shared_array_base = shared_array_base with Pool(processes=None, initializer=_initialize_subprocess, initargs=(dataArray,)) as pool: pool.starmap(StartProcess, [(,)])
Voila, merci d'avance pour vos réponses à ces question.
Je suis sous python 3.5 64bits sous windows 7 pro
Partager