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

Réseau/Web Python Discussion :

Limite du nombre de thread


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut Limite du nombre de thread
    bonsoir

    j'ai créé un petit outil qui permet de pinguer des équipements (MODEM) en utilisant une connexion SSH vers le serveur à partir duquel sont exécuter les ping.

    j'utilise paramiko pour cela puis je réalise les ping à travers des thread.

    mon outil fonctionne très bien lorsque ma liste des IP est de 11 ou moins mais je me heurte à un problème de nombre de thread possible.

    je ne peux en avoir plus de 11 a priori.

    Or mon parc d @ IP est d'environ 4000.

    une solution existe-t-il pour contourner ce problème ?

    par avance merci

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Salut,



    S'il y a une limite, elle est fixée par le système (et pas par Python) et est généralement autour de quelques milliers.

    Si çà bloque à 11, probable que ce soit pour autre chose...
    D'ailleurs vous pourriez écrire un petit programme qui crée plusieurs dizaines de threads pour le vérifier.

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

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    bonjour

    merci de votre réponse

    En effet la restriction est au niveau du serveur qui n'accepte que 10 accès par client (configuration par défaut).

    en vous remerciant de votre réponse.

    CDT

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    Après passage du parametre à 4000 je me trouve confronté à un autre problème

    impossible de créer plus de 685 threads

    runtime error can t start new thread file threadind.py line 852


    j ai divisé mon fichier d importation d IP en plusieurs partie afin que chacun présente moins de 650 éléments

    j ai modifie mon py pour en créer 3 fichier1.py fichier2.py et fichier3.py en veillant a donner des références différentes de noms de thread. chacun allant chercher un fichier d'ip différent.

    j'ai lancé 3 instances python pour lesquelles j'ai lancé l'import d'un .py différent.
    De cette manière, j'arrive à couvrir la globalité des mes adresses à pinguer.
    j'ai donc un nombre de thread ouvert important au total. le nombre de thread semble dépendant de l'instance python.
    je semble disposé de 685 thread pour chaque session python sur l'équipement sur lequel je me connecte en SSH



    je n'arrive pas à comprendre ce qui me limite ma capacité de thread pour une seule instance de python.


    j'ai également changer la commande lancé ( ls en remplacement de ping idem )

    j'ai modifie le nombre d'occurences passage d'infini à 1 avec clôture du thread à l'issue. Ainsi je n'ai plus l'erreur !!

    Cdt

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    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 762
    Par défaut
    Citation Envoyé par raphael75015 Voir le message
    je n'arrive pas à comprendre ce qui me limite ma capacité de thread pour une seule instance de python.
    685 me semble raisonnable comme limite imposée par l'environnement système en fonction de son paramétrage et des ressources disponibles.

    Pour le reste, les threads sont une "astuce" pour permettre à un programme d'utiliser l'ensemble des CPU d'une machine pour réduire les temps de calculs.
    Il n'y a pas grand intérêt à avoir plus de threads que de CPU.

    Pire avec Python, vous pouvez créer autant de threads que de CPU, vous arriverez à consommer rarement plus que la capacité d'un CPU. (d'où l'intérêt d'asyncio)

    En plus, faire des "pings", c'est expédier un message sur la carte réseau et attendre la réponse du host, partir en timeout ou recommencer un certain nombre de fois.
    Comme les messages passent en série sur la carte réseau, si on a 100 threads qui poussent un message en même temps, pendant que le message d'un des threads passe, un autre sera temporairement stocké en mémoire de la carte et les 98 autres attendent.

    A la base vous avez un problème de conception: je veux faire un truc. Quelles sont les ressources disponibles? Quel est sont les facteurs limitants? A partir de là comment écrire un code qui aille le plus rapidement possible en utilisant au mieux ces ressources.

    Vous avez plus un problème de physique que de programmation Python.

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

Discussions similaires

  1. Comment limiter le nombre de threads dans mysql ?
    Par Bronks59 dans le forum Administration
    Réponses: 2
    Dernier message: 28/04/2017, 13h47
  2. Multithreading : Limiter le nombre de threads actifs
    Par AliHome dans le forum VB.NET
    Réponses: 7
    Dernier message: 23/10/2013, 09h55
  3. Limiter le nombre de Threads
    Par sunp dans le forum Concurrence et multi-thread
    Réponses: 7
    Dernier message: 11/03/2008, 11h02
  4. Limite au nombre de Thread
    Par uriotcea dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 21/12/2007, 14h34
  5. [débutant] Limitation du nombre d'enregistrement renvoyé
    Par tmcgrady dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/11/2003, 09h41

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