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 :

multiprocessing dans une def!


Sujet :

Python

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

    Citation Envoyé par Robin Richard Voir le message
    Le but est très simple: faire fonctionner cela! (du moins, dans un premier temps!)
    L'idéal serait que quand j'appelle la méthode run() depuis l’extérieur, la variable lecture.matrice se remplisse au fur et à mesure dans l'ordre croissant (sans mélanger les lignes car cela fera bizarre dans l'image finale).
    Quelque part, le problème n'est pas tellement le "but" mais la démarche, les étapes qui vont vous permettre d'y arriver. multiprocessing ne vous permet pas de découper les activités/le travail entre plusieurs processus n'importe comment. Donc, il vous faut commencer par réfléchir à un "prototype" dans lequel on retrouvera le tas de données de départ, la mécanique permettant de distribuer le boulot entre différents processus et celle permettant de faire quelque chose du résultat.
    L'autre intérêt est que vous pourrez poster un code qui permettra de reproduire les problèmes que vous rencontrez.

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

  2. #22
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Par défaut
    J'ai du mal à saisir le sens de votre message. J'ai mes idées sur la manière don je compte m'y prendre. Elles sont d’ailleurs résumées dans les bouts de programmes que j'ai posté. Ce qui me bloque, c'est le fait que je n'arrive pas à les mettre en place. Comme j'utilise des modules tous fait, je n'ai pas le contrôle complet de mon code.

    Il se trouve que l'erreur actuelle est la suivante:

    File "fractale_objet.py", line 2814, in run
    lecture.matrice.extend([resultat.get() for resultat in liste_res])#Récupération des derniers résultats
    File "fractale_objet.py", line 2814, in <listcomp>
    lecture.matrice.extend([resultat.get() for resultat in liste_res])#Récupération des derniers résultats
    File "/usr/lib/python3.4/multiprocessing/pool.py", line 599, in get
    raise self._value
    File "/usr/lib/python3.4/multiprocessing/pool.py", line 383, in _handle_tasks
    put(task)
    File "/usr/lib/python3.4/multiprocessing/connection.py", line 206, in send
    self._send_bytes(ForkingPickler.dumps(obj))
    File "/usr/lib/python3.4/multiprocessing/reduction.py", line 50, in dumps
    cls(buf, protocol).dump(obj)
    _pickle.PicklingError: Can't pickle <class '_thread.lock'>: attribute lookup lock on _thread failed

    Mais je ne comprend toujours pas, c'est une erreur qui ne vient pas directement de mon code, mais d'une mauvaise utilisation du module. Je ne comprend pas pourquoi il fait pas tous simplement les calculs en parallèle?

  3. #23
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par Robin Richard Voir le message
    Mais je ne comprend toujours pas, c'est une erreur qui ne vient pas directement de mon code, mais d'une mauvaise utilisation du module. Je ne comprend pas pourquoi il fait pas tous simplement les calculs en parallèle?
    Raison de plus pour vous familiariser à son utilisation avec de petits exemples qui vous permettront de comprendre comment çà fonctionne.... jusqu'à un prototype de son utilisation par votre programme.
    C'est vous qui voyez mais je ne vois pas trop comment on va bien pouvoir vous aider sans çà.

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

  4. #24
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 22
    Par défaut
    Tous ces scripts fonctionnent parfaitement lorsque'ils sont isolés. Y compris le tout premier que j'ai posté! Mais alors, la question que je me pose est la suivante. Qu'est ce qui pourrait interférer avec ce module plus ou moins directement? Es-ce que le fait que d'autres objets tournent en arrière plan (avec le module thread), pourrait empêcher le bon déroulement de l’exécution du script?

  5. #25
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Citation Envoyé par Robin Richard Voir le message
    Mais alors, la question que je me pose est la suivante. Qu'est ce qui pourrait interférer avec ce module plus ou moins directement? Es-ce que le fait que d'autres objets tournent en arrière plan (avec le module thread), pourrait empêcher le bon déroulement de l’exécution du script?
    Essayez de comprendre les erreurs que vous avez constaté.
    Si elles sont du style "PicklingError", c'est que "multiprocessing" c'est plusieurs processus qui exécutent le même programme en essayant de s'échanger des informations (l'état de certains objets). Pour effectuer cet échange, il faut réduire/sérialiser l'objet en une chaîne de caractères qui pourra être transmise et dé-sérialisée à l'autre extrémité.
    Cela dit, en découpant son programme un peu n'importe où, difficile de prédire quels seront les objets qui devront être mis à jour (et sérialisés via pickle) et il va falloir de la chance pour que çà tombe en marche.

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

Discussions similaires

  1. [Python 3.X] Ajouter des Labels/Buttons sur une fenetre dans une def
    Par RetardedGenji dans le forum Tkinter
    Réponses: 3
    Dernier message: 10/06/2017, 13h55
  2. Réponses: 11
    Dernier message: 29/04/2016, 13h15
  3. [Python 2.X] Déclaration d'un tableau dans une Class MaClass \ def
    Par macErmite dans le forum Général Python
    Réponses: 3
    Dernier message: 26/07/2015, 09h53
  4. Inclure un .def dans une dll
    Par wanchy dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 23/07/2009, 10h45
  5. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 14h39

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