Bonjour,
je suis plutôt développeur C++, et je fais occasionnellement du python. J'aime assez, car tout semble plus simple en python. Cependant, la logique du langage est différente, et je bute sur un truc qui, une fois n'est pas coutume, me paraitrait plus simple à faire en C++. Je dois parfaire ma connaissance python, car je suis sur que ce n'est pas si compliqué (j'ai commandé le Apprendre à programmer avec Python 3 par Gérard Swinnen pour avoir un vrai cours python, plutôt qu'un apprentissage "sur le tas")
Je vais illustrer mon propos avec du code lancé sous IDLE (très pratique d'ailleurs!)
Je lance des process avec l'objet Popen du module subprocess:
Apres je peux afficher les PID des process. En réalité, ici les process sont déja terminés donc les pid ne veulent plus dire grand chose mais c'est pour l'exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
Plutôt que de manipuler directement les variables p&, p2 et p3, je vais créer une liste de références vers ces objets:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
7
Maintenant je vais redéfinir un des process:
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
5
6
Le PID est different, c’est normal. Le problème est que dans la liste l’objet n’est pas mis à jour :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
6096 c’est l’ancienne valeur! Dans la liste on a une référence vers l’ancien objet, d’où l’ancien résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
Mais du coup, comment faire ? En C++ j'instancierais quelques objets pour créer des process puis je me ferais une liste de pointeurs sur ces objets pour y acceder. Mais en python "p1" est une référence, du coup je ne vois pas comment faire pour garder une liste de ces instances d'objets Popen ?
une idée ?

 

 
		
		 
         
 

 
			
			

 
			

 question sur les références, valable aussi en Python 3 je pense.
 question sur les références, valable aussi en Python 3 je pense.
				 Répondre avec citation
  Répondre avec citation
Partager