0

J'utilise parallel-python et démarrer un nouveau Job Server dans une fonction. après la fin des fonctions, il existe toujours même si je ne l'ai pas renvoyé hors de la fonction (j'ai utilisé weakref pour le tester). Je suppose qu'il y a encore des références à cet objet quelque part. Mes deux théories: Il démarre les threads et il se connecte à l'enregistreur racine.objet ne mourra pas (toujours des références à ce que je ne trouve pas)

Mes questions: puis-je trouver dans quel espace de noms il y a encore une référence à cet objet? J'ai la référence weakref. Est-ce que quelqu'un sait comment détacher un enregistreur? Quelles autres suggestions de débogage les gens ont-ils?

voici mon TestCode:

def pptester(): 

    js=pp.Server(ppservers=nodes) 
    js.set_ncpus(0) 
    fh=file('tmp.tmp.tmp','w') 
    tmp=[] 
    for i in range(200): 
     tmp.append(js.submit(ppworktest,(),(),('os','subprocess'))) 
    js.print_stats() 
    return weakref.ref(js) 

merci à l'avance Wolfgang

Répondre

1

Vous pouvez utiliser gc.get_referrers(obj) pour savoir ce qui fait référence à l'objet. Parce que vous aurez très probablement un tas de dicts comme réponse, vous devrez remonter quelques niveaux pour en avoir une idée.

+0

qui a fonctionné. a découvert que le paquet utilisait le module atexit. merci pour votre aide –

Questions connexes