Ho un codice Python in cui gc.collect() sembra liberare molta memoria. Data la natura di conteggio dei riferimenti di Python, sono propenso a pensare che il mio programma contenga molti riferimenti ciclici. Poiché alcune strutture di dati sono piuttosto grandi, vorrei introdurre riferimenti deboli. Ora ho bisogno di trovare i riferimenti circolari, avendo trovato alcuni di quelli ovvi, Mi chiedo se uno può rilevare riferimenti circolari e gli oggetti che formano l'anello esplicitamente. Finora ho visto solo tutorial su come chiamare gc.collect et. al.Come scoprire quali riferimenti circolari specifici sono presenti nel codice
5
A
risposta
0
A meno che non si stia eseguendo l'override dei metodi __del__
, non ci si deve preoccupare delle dipendenze circolari, poiché Python è in grado di gestirle correttamente.
+0
... fino a quando non si tenta di utilizzare la multiprocessing di Python e gli oggetti non si accartocciano più . IMO è una buona idea pensare a come evitare i riferimenti ciclici durante la progettazione di un'applicazione, perché mantiene aperte diverse porte per ottimizzare le prestazioni in un secondo momento. Questo * non * è lo stesso dell'ottimizzazione prematura. –
Problemi correlati
- 1. I riferimenti circolari sono accettabili nel database?
- 2. Perché i riferimenti circolari sono considerati dannosi?
- 3. I "riferimenti circolari" in JPA sono antipattern?
- 4. Come gestire i riferimenti circolari?
- 5. riferimenti circolari in RavenDB
- 6. Come salvare un oggetto con riferimenti circolari?
- 7. Quali caratteri NON sono presenti in Unicode?
- 8. Infissi di dottrina - riferimenti circolari
- 9. Riferimenti file circolari non consentiti
- 10. Trovare variabili 'Lost' (riferimenti circolari)
- 11. risolvere i riferimenti circolari da oggetto JSON
- 12. Dovrei preoccuparmi dei riferimenti circolari in Python?
- 13. Xamarin garbage collector e circolari riferimenti
- 14. Come scoprire quali tipi di carattere sono referenziati e quali sono incorporati in un documento PDF
- 15. Motivo per riferimenti circolari con classi?
- 16. NLTK - come scoprire quali corpora sono installati all'interno di python?
- 17. Utilizzo di Parcelable con riferimenti circolari
- 18. ottenere riferimenti circolari intorno a Delfi
- 19. Come gestire l'oggetto di classe con riferimenti circolari?
- 20. Quali chicche sono presenti nelle shell UNIX sans BASH?
- 21. Come scoprire quali eventi JavaScript sono stati attivati?
- 22. riferimenti circolari tra le funzioni javascript
- 23. Riferimenti circolari in Javascript/Garbage collector
- 24. Errori durante l'importazione di riferimenti circolari
- 25. Javascript/CMS/editEase - quali CMS JS/frontend sono presenti?
- 26. javascript, riferimenti circolari e perdite di memoria
- 27. Collezione Garbarge in Ruby con riferimenti a oggetti circolari
- 28. Problema nel determinare come ordinare i tipi F # a causa di riferimenti circolari
- 29. Come NuGet risolve i riferimenti quando sono presenti librerie di classi sia portatili che non portatili?
- 30. Come puoi gestire i riferimenti circolari durante la mappatura?
Questi oggetti hanno metodi '__del__' personalizzati? – Cyphase
È possibile trovare utile il pacchetto [objgraph] (http://mg.pov.lt/objgraph/). Creerà una visualizzazione dei riferimenti tra gli oggetti. [Ecco un post sul blog su riferimenti circolari e objgraph.] (Http://engineering.hearsaysocial.com/2013/06/16/circular-references-in-python/) – Cyphase
Mi limiterò anche a menzionare che idealmente, si dovrebbe rimuovere questi riferimenti circolari in primo luogo, se possibile, piuttosto che cercare di aggirarli :). – Cyphase