Sortie de boucle inexpliquée

Résolu/Fermé
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 24 sept. 2014 à 11:50
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 24 sept. 2014 à 15:59
Bonjour,
j'ai un certain nombre de calculs/taches à effectuer, et je ne voudrais pas en lancer plus d'un certain nombre de manière simultanée. Je fait donc une liste de thread que je remplis et vide au fur et à mesure. Mes tests sont stockés dans la liste "castests"
for castest in castests :
  while len(threads)>=num_proc:
    sleep(10)
    for thread in threads:
      if not thread.isAlive():
          threads.remove(thread)
  thread=thread_depuis(castest)
  threads.append(thread)
  thread.start()

donc normalement, je ne devrais pas avoir plus de num_proc thread en simultané, je crée un nouveau thread dès qu'un est mort.
Seulement, ça ne fonctionne pas, je ne sais pas pourquoi, le while n'est pas pris en compte, tout les thread sont créé et lancer en même temps.

2 réponses

fromagedebikette Messages postés 857 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 31 octobre 2016 189
24 sept. 2014 à 15:45
La condition while len(threads)>=num_proc: ne serait-elle pas inversée ?
ça serait pas plutôt while len(threads)<=num_proc ?

0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
24 sept. 2014 à 15:59
Après des jours de recherche et de print j'ai trouvé. Je ne sais pas trop pourquoi, mais num_proc est traité comme un string et non comme un entier.
Du coup, la comparaison est toujours fausse ! C'est pour ça que j'aime les langages à typage fort !
0