IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Boucle non bloquante


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Boucle non bloquante
    SAlut a tous voici je vous explique mon problème, j'ai fais un simple Client UDP, il fonctionne bien, c'est a dire qu'il recoit bien les trames et je les traitent comme je le souhaite.
    Cependant j'aimerais faire une boucle non bloquante en permanence sur la récupération de trames. Je ne sais pas du tout comment faire.
    S'il une personne aurait la générosité de m'aider SVP

    Bonne journée

    MERCI d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    je suppose que par "non bloquante" vous entendez une boucle d'écoute de port dans un autre fil d'exécution (thread) que le fil d'exécution principal (main thread) de votre programme.

    Vous pouvez commencer à étudier la programmation parallèle par les threads (fils parallèles d'exécution) avec la librairie officielle Python threading.

    voir ici : https://docs.python.org/3/library/threading.html

    puis plus tard ici (lorsque vous aurez progressé) : https://docs.python.org/3/library/concurrency.html

    bon courage.

    @+.
    Dernière modification par Invité ; 12/06/2014 à 23h29. Motif: Inutile de citer entièrement le message précédent

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Salut,

    Citation Envoyé par tarball69 Voir le message
    je suppose que par "non bloquante" vous entendez une boucle d'écoute de port dans un autre fil d'exécution (thread) que le fil d'exécution principal (main thread) de votre programme.
    Une lecture non bloquante est ce qu'on obtient après avoir appliqué un fcntl.fcntl(s, fcntl.F_SETFL, os.O_NONBLOCK).
    Comme derrière on va généralement placer un sleep avant de ré-essayer un certain nombre de fois, Python effectue le fcntl via "s.settimeout(1)". Dans ce cas, la lecture attend au plus 1 s. et remonte socket.timeout s'il rien n'est arrivé.
    De toutes façons avec UDP, il n'y a pas le choix.

    Avec les mots clés O_NONBLOCK ou settimeout vous allez trouver plein d'exemples via Google.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    OK, merci pour l'info, je vais étudier la question.

    @+.
    Dernière modification par Invité ; 12/06/2014 à 23h29. Motif: Inutile de citer entièrement le message précédent

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'en profite pour citer cette doc : http://www.beej.us/guide/bgnet/outpu....html#blocking

    select() a l'air pas mal pour éviter le non-blocking gourmand en ressources CPU.

    EDIT:

    J'ai trouvé ça pour Python : https://docs.python.org/3.4/library/...dule-selectors

    L'exemple cité https://docs.python.org/3.4/library/....html#examples semble répondre à la discussion actuelle.

    @+.
    Dernière modification par Invité ; 04/06/2014 à 18h18.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour toutes ces informations j'esseye ce matin et je vous tiens au courant! je ne vois pas trop encore comment je vais m'y prendre.

    Merci bien a+

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Existe t'il ?
    Existe t-il un moyen ou une méthode qui permet de vérifier qu'il y ai quelque choses dans la socket, je m'explique:

    Est-il possible de vérifier sans lire ce qu'il y a dans la socket mais juste de vérifier que celle ci n'est pas vide ?


    je voudrais en venir au lieu d'utiliser setblocking, car je n'y arrive pas, vérifier si il y a quelque choses dans la socket, SI il y a quelque choses la lire puis la traiter sinon continuer

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 241
    Points : 36 698
    Points
    36 698
    Par défaut
    Quand vous dites "je n'y arrive pas", montrez ce que vous avez essayé de faire.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Boucle non bloquante
    Par Drikcé dans le forum Delphi
    Réponses: 9
    Dernier message: 30/10/2006, 18h22
  2. Réponses: 5
    Dernier message: 02/09/2005, 13h47
  3. Rendre la lecture non bloquante
    Par Charlinecha dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 05/07/2005, 16h46
  4. Réponses: 3
    Dernier message: 16/03/2004, 17h42
  5. [API] Communication série NON-bloquante : OVERLAPPED/Thread
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/11/2003, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo