2017-07-03 1 views
0

Avant de poser ma question, laissez-moi mettre ma contrainte - Je ne peux pas poster le code car il est lié à mon travail et ils ne le font pas permettez-ceci. Donc, ce n'est qu'une question de sondage pour voir si quelqu'un a vu des problèmes similaires.multiprocessing python (en utilisant pytable) manque quelques résultats de la file d'attente dans la sortie finale

J'ai un multiprocessing python mis en place où les travailleurs font le travail et mettent le résultat dans une file d'attente. Un agent d'écriture spécial accumule ensuite les résultats de la file d'attente. Ces résultats sont de simples séries de pandas. L'accumulateur place les résultats dans un cadre de données pandas et l'écrit dans un pytable sur le disque. Le problème est que je vois au hasard que parfois quelques résultats sont manquants dans la trame de données, par ex. Sur les 268 colonnes attendues, j'obtiendrai 267. Cela s'est produit autour de 10 fois sur 80 au cours des trois derniers mois. Le remède est - il suffit de relancer le code (ce qui signifie recalculer tout) et cela fonctionne à 100% la deuxième fois. Je me suis assuré qu'il n'y a pas d'erreur dans les calculs, donc je suppose qu'il est lié à l'écriture de données multiprocesseur ou pytable.

Tous les indices sont appréciés. Désolé de ne pas pouvoir mettre le code.

Répondre

0

Il est vraiment difficile de vous aider sans code. Mais je pense juste que si vous voulez trouver des endroits "fins" dans votre code, vous devez écrire un journal. Comme je l'ai compris, une itération de votre travailleur doit créer des séries 268 qui sont faites en colonnes dans la base de données finale. Si ces séries ont la même forme, alors il semble que le problème soit dans le travail de la file d'attente - et vous devez l'enregistrer dans toutes les étapes que vous pouvez.