La sortie du journal de multitraitement.Processus
Est-il un moyen de connecter la sortie standard (stdout) de sortie d'un Processus donné lors de l'utilisation du multiprocessing.Processus de la classe en python?
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple pourrait être de simplement remplacer
sys.stdout
. Modifiant légèrement un exemple de le multitraitement manuel:Et en l'exécutant:
Il y a seulement deux choses que je voudrais ajouter à @Mark Rushakoff réponse. Lors du débogage, je l'ai trouvé vraiment utile de changer les
buffering
paramètre de monopen()
appels à 0.Sinon, folie, parce que quand
tail -f
ing le fichier de sortie, les résultats peuvent être extrêmement intermittent.buffering=0
pourtail -f
ing grande.Et pour être exhaustif, faites-vous une faveur et de les rediriger
sys.stderr
ainsi.Aussi, pour plus de commodité, vous pourriez dump que dans un processus distinct de la classe si vous le souhaitez,
Heres un correspondant gist
Vous pouvez définir
sys.stdout = Logger()
oùLogger
est une classe dont leswrite
méthode (immédiatement, ou accumulant jusqu'à un\n
est détecté) appelslogging.info
(ou de toute autre manière que vous voulez vous connecter). Un exemple de cela dans l'action.Je ne suis pas sûr de ce que tu veux dire par "un" processus (qui est donné, ce qui la distingue de toutes les autres...?), mais si vous voulez dire que vous savez ce processus, vous voulez sortir de cette façon, au moment de l'instanciation, alors vous pouvez l'envelopper de ses
target
fonction (et uniquement), ou lerun
méthode de remplacement dans unProcess
sous-classe -- dans une enveloppe qui effectue ce sys.stdout "redirection" -- et laisser les autres procédés seul.Peut-être que si vous clouer le specs un peu je peux vous aider plus en détail...?