J'ai écrit un enregistreur python qui fait exactement cela (même avec le support de mpi). Il est disponible à https://github.com/JensTimmerman/VSC-tools/blob/master/vsc/fancylogger.py
Cet enregistreur peut se connecter à un port udp sur un ordinateur distant.
Là, je lance un démon qui collecte les journaux et les écrit dans le fichier: https://github.com/JensTimmerman/VSC-tools/blob/master/bin/logdaemon.py
Ce script démarre le démon pour vous: https://github.com/JensTimmerman/VSC-tools/blob/master/bin/startlogdaemon.sh
Si vous commencez alors vos processus de python et de les exécuter en parallèle avec mpi par exemple, vous aurez seulement besoin d'utiliser fancylogger.getLogger() et l'utiliser comme un logger python normal. Il va récupérer les variables d'environnement définies avec le script, se connecter à ce serveur, et avoir des informations mpi supplémentaires dans les enregistrements du journal. (Comme le numéro de fil mpi)
Si vous n'utilisez pas mpi vous aurez deux options:
définir les variables « FANCYLOG_SERVER » et « FANCYLOG_SERVER_PORT » manuellement dans chaque coquille où vous commencez le python à distance processus
ou de démarrer le démon. Et dans les scripts python obtenir votre enregistreur
comme ceci:
import fancylogger
fancylogger.logToUDP(hostname, port=5005)
logger = fancylogger.getLogger()
Non sans le code que nous ne pouvons pas. Je peux peut-être voir un problème dans votre réflexion sur l'opération: vous parlez d'un gestionnaire de processus distinct du gestionnaire de journaux. Ces deux tâches sont mieux gérées par un gestionnaire de processus qui génère des processus de travail, surveille leur état, les redémarre au besoin et ** agrège aussi leurs messages de journal à partir d'un tuyau établi lors de la création du sous-processus. Etudiez le module multitraitement Python, assurez la supervision du processus et la journalisation devrait être beaucoup plus facile. – msw