Comment travailler avec les files

2022-10-12 14:16:47  marcredi  4956 mots  

Une file fonctionne différemment d’une pile. C’est exactement le principe de la file d’attente à un guichet. Vous arrivez et vous vous placez à la fin de celle-ci. Au fur et à mesure que les autres personnes sont servies, vous avancez dans la file, jusqu’au moment où c’est à votre tour. Cette structure est souvent utilisée pour gérer les listes de tâches, ou encore pour gérer le flux d’un programme (comme dans le monde réel, en fait). Les étapes qui suivent vous montrent comment créer une file. Vous retrouverez également cet exemple dans le fichier téléchargeable QueueData.py.

  1. Ouvrez une fenêtre de fichier Python.
    Vous pouvez par exemple lancer Python en mode Shell, puis choisir dans le menu File la commande New File.
  2. Tapez le code suivant en appuyant sur Entrée à la fin de chaque ligne :
    import queue
    
    MyQueue = queue.Queue(3)
    
    print(MyQueue.empty())
    input("Appuyez sur une touche quand vous êtes prêt...")
    
    MyQueue.put(1)
    MyQueue.put(2)
    print(MyQueue.full())
    input("Appuyez sur une touche quand vous êtes prêt...")
    
    MyQueue.put(3)
    print(MyQueue.full())
    input("Appuyez sur une touche quand vous êtes prêt...")
    
    print(MyQueue.get())
    print(MyQueue.empty())
    print(MyQueue.full())
    input("Appuyez sur une touche quand vous êtes prêt...")
    
    print(MyQueue.get())
    print(MyQueue.get())
    Pour créer une file, vous devez importer le module queue. Celui-ci contient en fait divers types de files, mais cet exemple utilise uniquement le classique FIFO (First In, First Out, premier entré, premier sorti).
    Lorsqu’une file est vide, la fonction empty () renvoie True. De même, lorsque la file est pleine, la fonction full () renvoie également True. En testant l’état vide ou plein, vous pouvez déterminer si vous avez besoin d’effectuer d’autres travaux avec la file, ou si vous pouvez lui ajouter d’autres informations. Ces deux fonctions vous aident donc à gérer vos files. Il n’est pas possible de parcourir une file à l’aide d’une boucle for comme dans d’autres types de collections. C’est pourquoi il vous faut faire appel à empty () et à full () pour connaître son état.
    Les deux fonctions utilisées pour travailler avec les données d’une file sont put (), qui ajoute une nouvelle information, et get(), qui supprime une donnée. L’une des difficultés, avec les files, est que si vous tentez d’y placer plus de données qu’elles ne peuvent en contenir, elles attendent simplement que de la place se libère pour les y stocker. À moins d’utiliser une application multithread (une qui se sert de plusieurs « fils » pour exécuter plus d’une action à la fois), cette situation pourrait se terminer par un gel de votre application.
  3. Choisissez la commande Run Module dans le menu Run.
    Une fenêtre Python en mode Shell va s’ouvrir. L’application teste l’état de la file. Dans ce cas, la sortie produite devrait être True, ce qui indique que la file est vide.
  4. Appuyez sur Entrée.
    L’application ajoute deux nouvelles valeurs à la file. Celle-ci n’est donc plus vide, comme l’illustre la Figure.
    Figure : Lorsque l’application ajoute de nouvelles valeurs à la file, celle-ci indique qu’elle n’est plus vide.
  5. Appuyez sur Entrée.
    L’application ajoute encore une entrée à la file. Celle-ci est donc maintenant pleine, puisqu’elle est conçue pour contenir trois éléments. La fonction full () retourne donc la valeur True.
  6. Appuyez sur Entrée.
    Pour libérer de la place dans la file, la fonction get () retire l’une des entrées, puis renvoie celle-ci. Du fait que la première valeur affectée à la file était 1, la fonction print () affiche cette valeur. De plus, les deux fonctions empty() et full () donnent maintenant comme réponse False (voir la Figure).
    Le suivi de leur état est une tâche essentielle avec les files.
  7. Appuyez sur Entrée.
    L’application supprime les deux entrées restantes. Le code affiche donc les valeurs 2 et 3.
  8. Vous pouvez quitter la fenêtre de Python.
Commentaire