Mon programme python a un comportement de performance curieux: plus il s'exécute, plus il est lent. Au début, il lance des dizaines d'unités de travail par minute. Après une heure, cela prend des dizaines de minutes par unité de travail. Mon soupçon est que cela est causé par un garbage collector encombré.Combien de temps l'éboueur utilise-t-il?
Le hic est que mon script est trop gourmand en mémoire pour cprofile de travailler sur de grandes courses. (voir: cProfile taking a lot of memory)
Nous avons écrit notre propre plugin de performance et nous pouvons observer la plupart des parties de notre système et aucun d'entre eux ne semble être le problème. Le seul roc qui n'a pas encore été retourné est le GC.
Y at-il une autre façon (en plus de profil ou cprofile) pour voir combien de temps va le GC?
Oui, je suis au courant. Ceux-ci peuvent me dire combien de choses le GC traite, mais mes problèmes immédiats sont avec des cycles de processeur, pas de mémoire. Si cela pouvait me dire le * temps * que le GC a utilisé ou même * combien de fois * il a passé, cela pourrait être utile. –
@Matthew: cela aiderait-il votre processus à appeler 'gc.collect()' lui-même, et le temps qu'il faut pour revenir? –
@Thomas K, cela me dirait combien de temps une seule collection prenait, mais pas à quelle fréquence le collectionneur fonctionne. Étant donné les autres données que j'ai, je soupçonne que le GC fonctionne de plus en plus souvent (de moins en moins d'effet) pendant que le système fonctionne. –