Fataler Python -Fehler: GC -Objekt, das beim Aufrufen des Set -Konstruktors bereits verfolgt wurdePython

Python-Programme
Anonymous
 Fataler Python -Fehler: GC -Objekt, das beim Aufrufen des Set -Konstruktors bereits verfolgt wurde

Post by Anonymous »

Ich habe die folgende Python2-Funktion in einem großen Python-Cython-Projekt (Druckerklärungen zum Debuggen hinzugefügt): < /p>

Code: Select all

import gc
def e_closure (startstate):
"""Return all states reachable from startstates on epsilon transitions.
"""
print('eclos1', startstate)
print(len(gc.get_objects()))
sys.stdout.flush()
work   = [startstate]
set()
print('eclos2')
print(len(gc.get_objects()))
sys.stdout.flush()
result = set()
print('eclos3')
sys.stdout.flush()
while work:
s = work.pop()
result.add(s)
for n in s.get_transitions(state.EPSILON):
if n not in result:
work.append(n)
x = sorted(result, key=lambda s: s.name)
return x
Dies stürzt mit fehlerhaftem Python -Fehler: GC -Objekt bereits verfolgt Wenn set () Konstruktor aufgerufen wird. Das auch nicht zum ersten Mal, sondern genau auf 10. Aufruf. Wenn ich in früheren Zeilen zusätzliche set () Anruf hinzufüge, stürzt es dort ab. Es stürzt jedoch nicht ab, wenn ich dict () oder list () stattdessen hinzufüge.
Beispielprotokolle:

Code: Select all

('eclos1', start)
6961
eclos2
6962
eclos3
('eclos1', d0)
6962
eclos2
6963
eclos3
('eclos1', d2)
6963
eclos2
6964
eclos3
('eclos1', d3)
6964
eclos2
6965
eclos3
('eclos1', d4)
6965
eclos2
6966
eclos3
('eclos1', d1)
6966
eclos2
6967
eclos3
('eclos1', c0)
6967
eclos2
6968
eclos3
('eclos1', c2)
6968
eclos2
6969
eclos3
('eclos1', c3)
6969
eclos2
6970
eclos3
('eclos1', c4)
6970
In dieser gesamten Funktion ist nur get_transitionss eine Cython -Funktion. Außerdem funktionierte es vorher und verursachte Probleme erst nach der Cythonisierung. Aber ich kann nicht verstehen, was das Problem ist und wie ich es debuggen.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post